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 :

SELECT CASE et LIKE


Sujet :

Langage SQL

  1. #1
    Membre averti
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Points : 330
    Points
    330
    Par défaut SELECT CASE et LIKE
    Bonjour,

    J'utilise postgresql

    J'ai une table dans laquelle j'ai une colonne reponse contenant une chaine.

    J'aimerais en fonctionne de ce que contient la chaine creer une nouvelle colonne avec un etat.

    Cette requette fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *,
    CASE reponse WHEN '101' THEN 'ok' ELSE 'nok' END AS etat
     FROM sms
    Maintenant le probleme c'est que ma chaine contient des donnees du style
    "xmlxmlxml Statut=101 xmlxml"

    du coup j'ai essaye de faire un cette requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *,
    CASE reponse WHEN LIKE '%Statut=101%' THEN 'ok' ELSE 'nok' END AS etat
     FROM sms
    et ma ca fonctionne pas :s

    Comment je peux faire ca?

    Merci,

  2. #2
    Membre averti
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Points : 330
    Points
    330
    Par défaut
    J'ai essaye ca aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *,
    CASE reponse 
    WHEN reponse LIKE '%Z'  THEN '3131'
    WHEN '101' THEN 'ok' 
    ELSE 'nok' 
    END AS etat
    FROM sms
    et ca me renvoye l'erreur suivante
    ERROR: operator does not exist: character varying = boolean
    HINT: No operator matches the given name and argument type(s). You may need to add explicit type casts.

    ********** Erreur **********

    ERROR: operator does not exist: character varying = boolean
    État SQL :42883
    Astuce : No operator matches the given name and argument type(s). You may need to add explicit type casts.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 77
    Points : 84
    Points
    84
    Par défaut
    Je ne connais pas postgresql mais je ferais plutôt ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT *,
    CASE  WHEN reponse LIKE '%Z'  THEN '3131'
             WHEN reponse = '101' THEN 'ok' 
             ELSE 'nok' 
    END AS etat
    FROM sms

  4. #4
    Membre averti
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Points : 330
    Points
    330
    Par défaut
    Ca marche merci

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Quand vous mettez une colonne entre le CASE et le WHEN, vous vérifirez forcément une égalité.

    Aussi la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CASE reponse WHEN '101'
    est interprétée en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CASE WHEN reponse = '101'
    Mais en utilisant le LIKE, vous n'avez plus le droit de le faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CASE reponse WHEN LIKE '%Statut=101%'
    Devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CASE WHEN reponse = LIKE '%Statut=101%'
    Il vous faut donc utiliser la syntaxe de dragon74.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Points : 330
    Points
    330
    Par défaut
    Merci c'est clair maintenant.

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

Discussions similaires

  1. Problème SELECT, CASE et Group by
    Par Royd938 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 03/10/2014, 07h41
  2. [XL-2007] Procédure select case and like conjuguées
    Par waaax dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/11/2012, 15h01
  3. erreur select case
    Par maximedrouet dans le forum ASP
    Réponses: 4
    Dernier message: 15/05/2006, 14h40
  4. erreur select case
    Par maximedrouet dans le forum ASP
    Réponses: 12
    Dernier message: 06/01/2005, 15h33
  5. vérification de passage dans un select case
    Par arsgunner dans le forum ASP
    Réponses: 5
    Dernier message: 14/06/2004, 10h05

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