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

Langage SQL Discussion :

Syntaxe : noms de colonnes contenant des caractères spéciaux


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Syntaxe : noms de colonnes contenant des caractères spéciaux
    Bonjour,

    je cherche à corriger ma requête SQL que voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    INSERT INTO adherent (firstname,
    							lastname,
    							password,
    							email,
    							cb_numadherent,
    							cb_datedenaissance,
    							cb_telephone,
    							cb_adresse,
    							cb_cp,
    							cb_ville,
    							cb_pays,
    							cb_siteinternet,
    							cb_typemembre,
    							cb_catprofessionnelle,
    							cb_organisme,
    							cb_profession) 
                                                                               VALUES (SELECT       
                                                                                             Prenom,
    	                                                                                 NomAdherent,
    	                                                                                 n°adhérent,
    										         Emailtexte,
    				                                                      DateDeNaissance,
    											 Telephone,
    											 Adresse,
    											 CategorieProf,
    											 Organisme,
    											 Titreorganisme,
    											 n°adherent
                                    FROM         T_Adherent WHERE n°adhérent <> NULL);
    Je suspecte que cela vienne des caractères '°' et/ou 'é'.

    Les circonstances font que je dois travailler sous l'Access de Libre Office qui ne me montre pas mes erreurs.

    Mes questions sont donc les suivantes:
    D'où viennent le(s) erreurs et comment les résoudre ?
    Connaissez-vous un bon correcteur syntaxique de SQL, online ou pas (ou un bon IDE proposant cette fonction)?
    MS Access montre t'il les erreurs ?(pour savoir si je me le procure ou pas, utilisant Libre Office pour l'instant)

    Merci

    PH

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Les colonnes contenant des caractères spéciaux doivent être encapsulées dans des "" ou []. C'est une des raisons pour lesquelles on n'utilise pas de caractères spéciaux dans les noms de table / colonne.

    La syntaxe de votre requête est fausse :
    1. INSERT INTO VALUES ne sert à insérer qu'une seule ligne.
      Pour insérer un ensemble de ligne, on écrit directement le SELECT après l'INSERT.
    2. C'est bien de spécifier les colonnes de la table insérée mais il doit y en avoir autant, du même type et dans la même position qu'au niveau du SELECT.
      Là vous essayez de mettre douze colonnes dans la place de seize, ça ne va pas fonctionner.
    3. Pour éliminer les nulls, on ne fait pas <> NULL car null n'est pas une valeur.
      La syntaxe adéquate est IS NOT NULL.


    Et pour finir, vous auriez surement trouvé toutes ces informations par vous-même en parcourant les tutoriels SQL, c'est toujours un bon point d'entrée !

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Oui c'est sûrement la colonne mal nommée "n° adhérent" qui pose problème.

    Règle d'or :
    N'utiliser, pour nommer les objets des BDD, que les lettres non accentuées, les chiffres et le caractère de soulignement.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci pour vos réponses, le fait est que je manque de temps et j'ai préféré poster puis chercher la réponse en attendant celles du fil. La table d'origine a été crée par un non informaticien d'où les mauvais noms de colonnes.

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Si je ne m'abuse, dans Libre Office Base, comme dans Open Office Base, on peut mettre les noms de colonnes entre guillemets.
    À vérifier dans la doc.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    J'ai trouvé le bon module pour exécuter du SQL sur LO base, et dedans j'essaye cette requête, simplifiée pour isoler les problèmes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO adherent (firstname) SELECT Prenom FROM T_Adherent WHERE n[°]adh[é]rent IS NOT NULL
    et j'obtiens l'erreur suivante: "Erreur de syntaxe (opérateur absent) dans l'expression 'n[°]adh[é]rent IS NOT NULL'.".

    Même résultat avec n"°"adh"é"rent.

    Pourtant il me semble avoir repris la bonne syntaxe venue tout droit de http://sqlpro.developpez.com/cours/null/.

    Quelqu'un a t-il la solution ?

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    C'est le nom de colonne qu'il faut encadrer de guillemets doubles !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO adherent (firstname)
    SELECT  Prenom 
    FROM    T_Adherent 
    WHERE   "n°adhérent" IS NOT NULL
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    n[°]adh[é]rent --> [n°adhérent]

    ou

    n
    "°"adh"é"rent --> "n°adhérent"
    ~ Lola ~

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Va chercher la doc de Libre Office la syntaxe pour les noms de colonnes dans les requêtes quand il y a des espaces ou autres caractères indésirables.

    Le site de SQLPro, c'est du langage SQL pur. Quand il présente du code dédié à un SGBD (généralement SQL Server), il le signale.

    Je ne comprends pas pourquoi tu as fait cette dernière requête mais ce qui te pose toujours problème, c'est la syntaxe de la colonne "n° adhérent".

    J'avais suggéré les guillemets autour du nom de colonne, as-tu essayé ?
    Sinon, cherche dans la doc Libre Office ou Open Office Base.

    Il y a aussi un forum assez réactif pour ces suites logicielles mais très réactif contre ceux qui ne font pas l'effort de chercher d'abord dans la doc avant d'y poser un problème !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    La norme c'est les guillemets, pas les crochets qui sont spécifiques à SQL Server.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  11. #11
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    MySQL utilise quant à lui des apostrophe inversées si je ne m'abuse : `
    On ne jouit bien que de ce qu’on partage.

  12. #12
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    MySQL utilise quant à lui des apostrophe inversées si je ne m'abuse : `
    Oui, c'est d'ailleurs très chiant à taper alors je m'arrange pour n'en avoir jamais besoin : je nomme correctement mes objets en BDD selon un standard inspiré de celui de SQLPro.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  13. #13
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Oui, c'est d'ailleurs très chiant à taper alors je m'arrange pour n'en avoir jamais besoin : je nomme correctement mes objets en BDD selon un standard inspiré de celui de SQLPro.
    On est bien d'accord, US7ASCII rulez
    Et encore, le "_" autant s'en passer le plus possible
    On ne jouit bien que de ce qu’on partage.

Discussions similaires

  1. Passage de paramètres contenant des caractères spéciaux (+, -,etc.)
    Par Mil17 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/06/2008, 11h21
  2. Probléme avec requétes contenant des caractéres spéciaux
    Par dragonfly dans le forum Requêtes
    Réponses: 1
    Dernier message: 08/11/2007, 17h20
  3. Nettoyer une chaine contenant des caractères spéciaux?
    Par adil_vpb dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/05/2007, 15h47
  4. Réponses: 1
    Dernier message: 22/01/2007, 20h33
  5. [JDOM] Parser un xml contenant des caractères spéciaux
    Par Baptiste Wicht dans le forum Format d'échange (XML, JSON...)
    Réponses: 16
    Dernier message: 19/07/2006, 11h57

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