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 :

[SQL Server 2000] Syntaxe incorrecte "CASE"


Sujet :

Langage SQL

  1. #1
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut [SQL Server 2000] Syntaxe incorrecte "CASE"
    Bonjour,

    Je ne vois pas trop ou est mon erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CASE T_CLIENT.CLIE_CD_CIVIL 
            WHEN CLIE_CD_CIVIL = '1' THEN Monsieur
            WHEN CLIE_CD_CIVIL = '2' THEN Madame
            WHEN CLIE_CD_CIVIL = '3' THEN Mademoiselle
    END AS [Civilité],
    Quand je lance la requête, cela me dis que la synthaxe est incorrect près du '='. J'ai essayé sans les simples quote, avec les simples et les doubles... Rien de plus
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    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 139
    Par défaut
    C'est soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CASE T_CLIENT.CLIE_CD_CIVIL
            WHEN '1' THEN Monsieur
            WHEN '2' THEN Madame
            WHEN '3' THEN Mademoiselle
    END AS [Civilité],
    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CASE 
            WHEN T_CLIENT.CLIE_CD_CIVIL = '1' THEN Monsieur
            WHEN T_CLIENT.CLIE_CD_CIVIL = '2' THEN Madame
            WHEN T_CLIENT.CLIE_CD_CIVIL = '3' THEN Mademoiselle
    END AS [Civilité],
    (pour la syntaxe normalisée..., mais SQL Server la respecte sur ce point je crois)
    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.

  3. #3
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Bonjour al1_24,

    Merci cela fonctionne avec ton premier exemple

    Par contre j'ai essayé (Si je peux t'embêter 30 Scd) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT
              'T_CLIENT.CLIE_NOM' || 'T.CLIENT.CLIE_PRENOM' AS [Nom Complet]

    De même cela ne fonctionne pas... J'ai aussi essayé en enlevant le nom de la table !!!
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    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 139
    Par défaut
    Citation Envoyé par Chtulus Voir le message
    cela ne fonctionne pas...
    Un peu court pour comprendre ce que tu veux faire et supposer l'erreur qui t'est renvoyée.

    Dans l'absolu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT 'T_CLIENT.CLIE_NOM' || 'T.CLIENT.CLIE_PRENOM'
    te retournera la chaine suivante, pour chaque ligne de la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'T_CLIENT.CLIE_NOMT.CLIENT.CLIE_PRENOM'
    Est-ce bien ce que tu souhaites ?
    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.

  5. #5
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Je vois ce que tu veux dire. J'ai ajouté le Blank.

    Voilà en fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT
             CASE T_CLIENT.CLIE_CD_CIVIL
                  WHEN '1' THEN Monsieur
                  WHEN '2' THEN Madame
                  WHEN '3' THEN Mademoiselle
             END AS [Civilité],
             'T_CLIENT.CLIE_NOM' || ' ' || 'T.CLIENT.CLIE_PRENOM' As [Nom Complet],
       ...
     
    WHERE 
             'T_CLIENT.CLIE_NOM' || ' ' || 'T.CLIENT.CLIE_PRENOM' = ('DUPONT Charles')
    ...
    Et le résultat devrait donner quelque chose comme :
    Monsieur DUPONT Charles
    Et bien sur cela ne me renvoi aucune ligne...
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  6. #6
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Commencez par enlever les quotes entre le nom de vos colonnes de table

    Bon Courage

  7. #7
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Bonjour Yanika,

    Mais cela me mets "Syntaxe incorrect près de '|' "...
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  8. #8
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Pouvez vous poster votre requete sans les quotes , et qui vous renvoie l'"erreur de syntaxe ?

  9. #9
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    En même temps je suis allez vérifier sur http://sql.developpez.com/sqlaz/fonctions/

    est "||" est noté comme n'étant pas une fonction SQL Server ?

    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
     
    SELECT
             CASE T_CLIENT.CLIE_CD_CIVIL
                  WHEN '1' THEN Monsieur
                  WHEN '2' THEN Madame
                  WHEN '3' THEN Mademoiselle
             END AS [Civilité],
             T_CLIENT.CLIE_NOM || ' ' || T.CLIENT.CLIE_PRENOM AS [Nom Complet],
             T_CLIENT.CLIE_RESIDENCE,
             T_CLIENT.CLIE_NUM_RUE,
             T_CLIENT.CLIE_NOM_RUE,
             T_CLIENT.CLIE_CD_POST,
             T_CLIENT.CLIE_VILLE
     
    FROM
            T_CLIENT
     
    WHERE
             T_CLIENT.CLIE_NOM || ' ' || T.CLIENT.CLIE_PRENOM = 'DUPONT Charles'
       AND T_CLIENT.CLIE_CD_POST = '69002'
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  10. #10
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    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 139
    Par défaut
    Citation Envoyé par Chtulus Voir le message
    "||" est noté comme n'étant pas une fonction SQL Server ?
    || n'est pas une fonction mais un opérateur
    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.

  11. #11
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Je ne suis pas expert SQL Server, mais SYBASE ayant le meme moteur a l'origine, essayer d'utiliser le + pour la concatenation de vos chaines de caracteres.

    Bon Courage

  12. #12
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    De plus vous devez quoter le resultat de votre CASE car il vous ramene une chaine de caracteres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    WHEN '1' THEN 'Monsieur'
                  WHEN '2' THEN 'Madame'
                  WHEN '3' THEN 'Mademoiselle'
    ...

  13. #13
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Toujours très pointilleux al1_24, je te remercie pour la rectification, tu as raison, un chat s'apelle un chat, un chien s'apelle un chien.

    Yanika, bien vu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    T_CLIENT.CLIE_NOM + ' ' + T.CLIENT.CLIE_PRENOM AS [Nom Complet]
    Je vous remercie pour vos aides respectives
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL Server 2000]Update avec case
    Par nox75 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/10/2007, 21h18
  2. Réponses: 4
    Dernier message: 22/09/2006, 15h24
  3. [SQL server 2000] Problème de jointure avec 'Case'
    Par Tankian dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/06/2006, 18h42

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