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 : 44
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    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

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    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 102
    Points : 28 387
    Points
    28 387
    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)

  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 : 44
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    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 !!!

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    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 102
    Points : 28 387
    Points
    28 387
    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 ?

  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 : 44
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    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...

  6. #6
    Membre expérimenté 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
    Points : 1 738
    Points
    1 738
    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 : 44
    Localisation : France, Rhône (Rhône Alpes)

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

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

    Mais cela me mets "Syntaxe incorrect près de '|' "...

  8. #8
    Membre expérimenté 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
    Points : 1 738
    Points
    1 738
    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 : 44
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    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'

  10. #10
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    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 102
    Points : 28 387
    Points
    28 387
    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

  11. #11
    Membre expérimenté 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
    Points : 1 738
    Points
    1 738
    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 expérimenté 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
    Points : 1 738
    Points
    1 738
    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 : 44
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    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

+ 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, 20h18
  2. Réponses: 4
    Dernier message: 22/09/2006, 14h24
  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, 17h42

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