IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Altérer une colonne


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 933
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 933
    Par défaut Altérer une colonne
    Bonjour,

    je cherche à changer le type d'une colonne . Le passer de INT à TEXT avec la requête suivante mai j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alter table intervention alter column date TEXT;
    j'ai l'erreur suivante

    Msg 206, Level 16, State 2, Line 18
    Conflit de types d'opérandes*: int est incompatible avec text
    Sauriez-vous où est mon erreur dans la syntaxe ?

    Merci d'avance.

  2. #2
    Membre chevronné Avatar de AaâÂäÄàAaâÂäÄàAaâÂäÄ
    Homme Profil pro
    db@
    Inscrit en
    Septembre 2021
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : db@

    Informations forums :
    Inscription : Septembre 2021
    Messages : 554
    Par défaut
    le message est clair ce n'est pas une question de syntaxe mais un problème de compatibilité de type.
    Entre nous, le type text est déprécié depuis au moins 15 ans et donc à éviter totalement.
    Regarde plutôt varchar, voir varchar(max) si tu as besoin d'une chaine de plus de 8000 caractères, ce qui m'étonnerait grandement vu que tu pars d'un INT.
    Et je vois que la colonne s'appelle date, donc pourquoi pas un type DATE tout simplement ?
    Le bon type, pour la bonne donnée, c'est TOUJOURS gagnant.

  3. #3
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 933
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 933
    Par défaut
    J'utilise INT car c'est dans l'énoncé d'un devoir. Mais je suis d'accord sur le bon type à utiliser 👍

  4. #4
    Membre chevronné Avatar de AaâÂäÄàAaâÂäÄàAaâÂäÄ
    Homme Profil pro
    db@
    Inscrit en
    Septembre 2021
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : db@

    Informations forums :
    Inscription : Septembre 2021
    Messages : 554
    Par défaut
    Citation Envoyé par sam01 Voir le message
    J'utilise INT car c'est dans l'énoncé d'un devoir. Mais je suis d'accord sur le bon type à utiliser 👍
    Bravo au prof qui a pondu cette question à la fois débile et obsolète !

    J'imagine que pour faire ça, ça prendrait une nouvelle colonne intermédiaire date2 (type text) pour ensuite faire la conversion de type en faisant le update.
    ensuite suppression de la colonne date puis renommage de la colonne date2 en date.
    Quelque chose dans ce goût-là, il faudrait tester, ce que je n'ai pas pris le temps de faire.

  5. #5
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 963
    Par défaut
    re,

    J'imagine que le prof en question vous a parlé des conversions implicite/explicite.
    La doc est toujours un bon point de départ :
    https://learn.microsoft.com/fr-fr/sq...it-conversions

    La question est : en quoi faut-il convertir le INT pour que le nouveau type soit convertissable en TEXT
    Hint : en 2 passes ça devrait le faire

    Oui, le prof eut été bien avisé de ne pas faire d'économie de colonne et d'en choisir une au nom "passe-partout" comme C1

    On est d'accord que ce genre de question est inenvisageable en production, et/ou, avec un volume conséquent.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 636
    Billets dans le blog
    10
    Par défaut
    Je suis d'accord avec ce qui précède sur l'importance du bon typage des données.
    Si la données est une date, alors un type DATE est requis. Si c'est une date potentielle, mais non fiabilisée et donc à contrôler, alors un CHAR(10) fixe suffira amplement et sera plus efficient qu'un VARCHAR court.

    Par ailleurs, nommer une colonne en utilisant un mot réservé SQL tel que "DATE" est une mauvaise pratique qui complique inutilement les requêtes.

    Soit deux défauts majeurs dans la conception de la BDD, ce qui est fâcheux de la part d'un enseignant.

Discussions similaires

  1. Ajout d'une colonne dans une table ...
    Par Djedjeridoo dans le forum SQL
    Réponses: 2
    Dernier message: 22/07/2003, 16h12
  2. Supprimer une colonne sous SQL Serveur 2000
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/07/2003, 12h24
  3. Check sur une colonne de table "en cours"
    Par in dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/07/2003, 09h47
  4. [PostGres] Suppresion d'une colonne.
    Par Gandalf24 dans le forum Requêtes
    Réponses: 4
    Dernier message: 23/05/2003, 09h02
  5. [VB.NET] Insérer une colonne de CheckBox dans un DataGrid
    Par Manue.35 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/05/2003, 11h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo