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

SQL Oracle Discussion :

Test chaine vide


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 469
    Par défaut Test chaine vide
    Bonjour à tous,

    je ne comprends pas un problème que j'ai.

    Je réalise un select tout simple sur une colonne de type VARCHAR2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from MATABLE where MACOLONNE is not null
    cela me retourne tout les enregistremenst souhaités

    PAR CONTRE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from MATABLE where MACOLONNE <> ''
    ne me retourne plus rien ! On ne peut pas tester une chaine vide ?

    Quelle requête exécuter alors ?

    Merci pour votre aide

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    IS NOT NULL ou IS NULL
    sont les moyens de tester les données NULL

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    '' c'est différent de NULL : http://sqlpro.developpez.com/cours/null/

  4. #4
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    Citation Envoyé par orafrance Voir le message
    '' c'est différent de NULL : http://sqlpro.developpez.com/cours/null/
    La chaine vide '' est bien traitée comme NULL, il n'y a pas de différence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL> SELECT dummy
      2  FROM dual
      3  WHERE '' IS NULL;
     
    D
    -
    X
     
    1 ligne sélectionnée.

  5. #5
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 469
    Par défaut
    Merci à tous pour vos éclaircissements

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par xdescamp Voir le message
    La chaine vide '' est bien traitée comme NULL, il n'y a pas de différence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL> SELECT dummy
      2  FROM dual
      3  WHERE '' IS NULL;
     
    D
    -
    X
     
    1 ligne sélectionnée.

    Le premier post montre le contraire Quelquechose qui n'est pas NULL n'est pas différent de NULL. NULL doit être incomparable. Oracle autorise une souplesse en introduisant '' = NULL mais ce n'est pas la norme en plus d'être trompeur. Le jour où ils respecteront la norme gare aux bugs

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 454
    Par défaut
    Non le premier post montre juste que la requête suivante ne retourne aucune donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM MATABLE WHERE MACOLONNE <> NULL
    Chez Oracle - et effectivement contrairement à la norme - la chaîne vide '' est équivalenté à NULL.
    Mais comme le précisait McM, les seuls opérateurs de comparaison admis sont IS NULL / IS NOT NULL.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/10/2005, 20h42
  2. Création de table - chaine vide
    Par christellel198 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 20/10/2005, 15h18
  3. copie de string donne une chaine vide
    Par zmatz dans le forum SL & STL
    Réponses: 5
    Dernier message: 15/10/2005, 15h31
  4. [XSL -PHP] Test si vide... et première valeur inférieure
    Par mamat- dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 06/08/2005, 18h57
  5. [BDD] renvoyer une chaine vide au lieu de null
    Par cmoulin dans le forum JDBC
    Réponses: 6
    Dernier message: 06/05/2004, 11h38

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