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 :

Etrange reaction d'un base sqllite


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Etrange reaction d'un base sqllite
    Bonjour

    Etrange curiosite avec une base sqllite
    une base de 30 enregistrements

    La requete
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    select * from  fic_out
    me renvoi tout naturellement toutes les données de table.

    par contre me retourne 2 enregistrement pourquelle le champ commentaire est null
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    select * from  fic_out
    where commentaire = commentaire ;


    il se comporte comme avec

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    select * from  fic_out 
    where commentaire is not null;


    cela semble plustot illogique non, qu'en pensez-vous?


  2. #2
    Expert confirmé
    Non, c'est parfaitement logique, NULL n'est égale à rien pas même à lui même.
    Donc, en cas de commentaire NULL, commentaire = commentaire ne ramène pas les commentaires NULL.

    C'est le même comportement sur Oracle ou sur les autres SGBD :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SQL> with t as (
    select 1 as c, 'test' as commentaire from dual union all
    select 2 as c, null as commentaire from dual
    )
    select * from t
    where commentaire = commentaire;
     
             C COMM
    ---------- ----
             1 test
     
    SQL>


    Pour NULL il faut utiliser IS NULL et IS NOT NULL.

  3. #3
    Rédacteur

    NULL n'est pas une valeur !!! C'est un symbole maquant l'absence de valeur; il n'est comparable à rien.....

    Prenons un exemple parlant donné par mon ami Rudi Bruchez :

    Quels sont les souvenir en communs de deux amnésiques ?

    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

###raw>template_hook.ano_emploi###