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 :

Comportement curieux de l'opérateur LIKE


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Comportement curieux de l'opérateur LIKE
    Bonjour à tous
    c'est mon 1er message ici !

    Voici mon problème (SGBD = Oracle 9.2.0.7) :
    j'ai une requete qui utilise l'opérateur LIKE, ou plus présicément 'NOT LIKE', pour retourner les enregistrements d'une table dont l'un des champs ne contient pas une certaine chaine de caractères.
    Le problème c'est que cette requète ne donne pas le résultat attendu si le champ sur lequel je fais le WHERE .. NOT LIKE .. est à NULL

    Concrêtement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT COUNT(*) FROM MESSAGE
    WHERE CLASS IN (1,2);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      COUNT(*)
    ----------
             1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT OBJECT_DESCRIPTION FROM MESSAGE
    WHERE CLASS IN (1,2);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    OBJECT_DESCRIPTION
    --------------------------------------------------------------------------------
    => le champ est à NULL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(*) FROM MESSAGE
    WHERE CLASS IN (1,2)
    AND OBJECT_DESCRIPTION NOT LIKE '%Unable to allocate a Priced CDR table%';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      COUNT(*)
    ----------
             0
    La requète ne me retourne pas l'enregistrement dont le champ est à NULL ..

    Est-ce un comportement normal ?
    J'ai trouvé une solution en concaténant le champ avec un caractère quelconque pour qu'il ne soit plus NULL, est-ce qu'il y a une autre solution plus simple/propre ?

    merci d'avance !
    (et bonne année !)

  2. #2
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    Le null est souvent absorbant, le symptôme que tu décris n'est pas surprenant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(*) FROM MESSAGE
    WHERE CLASS IN (1,2)
    AND (OBJECT_DESCRIPTION NOT LIKE '%Unable to allocate a Priced CDR table%' OR OBJECT_DESCRIPTION IS NULL)
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(*) FROM MESSAGE
    WHERE CLASS IN (1,2)
    AND NVL(OBJECT_DESCRIPTION,'x') NOT LIKE '%Unable to allocate a Priced CDR table%';
    ou COALESCE en SQL standard

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    merci !

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

Discussions similaires

  1. comportement curieux font-bold sous ffx ?
    Par SpaceFrog dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 22/06/2006, 11h51
  2. pb requête delete/update avec opérateur like, connexion ADO
    Par jerome666 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 09/02/2006, 16h47
  3. ParamByName et opérateur LIKE (IBQuery et IBStoredProc)
    Par Papino dans le forum Bases de données
    Réponses: 5
    Dernier message: 02/01/2006, 17h34
  4. Opérateur Like
    Par clems34 dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 26/08/2005, 16h22
  5. Opérateur like
    Par Troopers dans le forum ASP
    Réponses: 3
    Dernier message: 15/09/2003, 19h19

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