PaliSkill
SQL avancé

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 (ou a = 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 b renvoie toujours vrai ou faux, jamais NULL : NULL y est traité comme une valeur comparable.
  • NULL IS DISTINCT FROM NULL vaut faux (deux NULL ne sont pas « distincts » l'un de l'autre) ; valeur IS DISTINCT FROM NULL vaut 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