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

Oracle Discussion :

where texte <> '' ne fonctionne pas


Sujet :

Oracle

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 25
    Par défaut where texte <> '' ne fonctionne pas
    Bonjour

    Dans Oracle, un select avec une clause de type where texte <> '' ne fonctionne pas.
    Pour comprendre, voici un peu de code PL/SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    create table test
    (texte varchar(10))
     
    insert into test (texte) values ('text1');
    insert into test (texte) values ('');
    insert into test (texte) values (null);
     
     
    select count(*) from test
    -- donne 3 --> normal
    select count(*) from test
    where texte <> '' 
    -- donne 0 --> ce qui est anormal
    La dernière requete devrait donner 2 (ou 1) mais pas 0

    Est-ce que quelqu'un connait le problème ?

    Merci pour vos réponses

    Fox

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    NULL c'est vide alors que '' ça contient rien... je sais c'est subtil

    EDIT : tiens... d'ailleurs Oracle considère '' comme NULL...

  3. #3
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    C'est vrai que ca m'a étonné mais regarde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SQL> select nvl('', 'NULL') from dual;
     
    NVL(
    ----
    NULL
    Selon Oracle '' et NULL, c'est la même chose.

    Donc ta condition s'écrit texte <> NULL : c'est toujours faux de même que TEXTE = null est toujours faux.


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 25
    Par défaut
    Ok merci beaucoup pour vos réponses immédiates.

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

Discussions similaires

  1. text align justify ne fonctionne pas
    Par ickyknox dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 01/12/2013, 14h40
  2. [CS5] Texte dynamique qui ne fonctionne pas avec tous les chiffres
    Par Shikam dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 10/12/2010, 07h17
  3. Comme "Texte*" ne fonctionne pas en VBA?
    Par NewbiePower dans le forum Access
    Réponses: 3
    Dernier message: 07/12/2006, 10h11
  4. Réponses: 4
    Dernier message: 12/10/2006, 17h03
  5. "where @text" ou @text='nom='julien'' fonctionne p
    Par lord_paco dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/09/2003, 14h37

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