Leçon 7 / 9 — Chapitre 3: Fonctions numériques et NULL avancé
IS DISTINCT FROM : comparer en toute sécurité avec NULL
Une comparaison classique (=, <>) renvoie toujours NULL (jamais vrai ni faux) dès qu'un des deux côtés vaut NULL — ce qui exclut silencieusement ces lignes d'un WHERE. IS DISTINCT FROM traite NULL comme une valeur comparable à part entière.
SELECT nom FROM clients WHERE email <> 'emma@mail.com';
Cette requête garde les clients dont l'email diffère de 'emma@mail.com' — mais exclut Nina (id 3), dont l'email est NULL : NULL <> 'emma@mail.com' vaut NULL, jamais vrai. Résultat : 3 lignes (LUCAS, noé, Sophie).
SELECT nom FROM clients WHERE email IS DISTINCT FROM 'emma@mail.com';
IS DISTINCT FROM considère NULL comme différent de 'emma@mail.com' : Nina est cette fois incluse. Résultat : 4 lignes (LUCAS, Nina, noé, Sophie).
À retenir :
a <> b(oua = b) renvoie NULL dès qu'un des deux côtés est NULL — la ligne est alors silencieusement exclue d'un WHERE.a IS DISTINCT FROM brenvoie toujours vrai ou faux, jamais NULL : NULL y est traité comme une valeur comparable.NULL IS DISTINCT FROM NULLvaut faux (deux NULL ne sont pas « distincts » l'un de l'autre) ;valeur IS DISTINCT FROM NULLvaut vrai pour toute valeur non-NULL.
À vous de jouer : combien de lignes renverrait SELECT nom FROM clients WHERE email IS NOT DISTINCT FROM 'emma@mail.com'; (l'inverse logique) ?
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 80 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès