Aller au contenu
Filtrage avancé

IS NULL / IS NOT NULL

NULL signifie « valeur inconnue » et ne se compare pas avec =. IS NULL et IS NOT NULL sont les seuls tests fiables pour trouver une donnée manquante, comme une classe sans professeur.

  • NULL
  • valeur manquante
  • vide
  • IS DISTINCT FROM
  • logique trivalente

Syntaxe

Modèle
WHERE colonne IS NULLWHERE colonne IS NOT NULL

Exemple

Exemple concret
SELECT name AS classeFROM classesWHERE teacher_id IS NULL;-- Jeu de données : école-- WHERE teacher_id = NULL renverrait 0 ligne.-- Résultat attendu :-- 4ème A

À retenir

  1. NULL n'est ni 0 ni la chaîne vide '' : c'est l'absence de valeur. Toute comparaison ou opération avec NULL donne NULL (NULL + 1 vaut NULL).
  2. Piège : WHERE status <> 'livré' écarte aussi les lignes où status est NULL, car la comparaison n'est pas vraie. Ajoutez OR status IS NULL si elles doivent rester.
  3. Pour comparer en traitant deux NULL comme égaux : a IS NOT DISTINCT FROM b (standard, accepté par SQLite 3.39+ et PostgreSQL), ou simplement a IS b dans SQLite.
  4. COALESCE(col, valeur) remplace NULL par une valeur de repli à l'affichage.

Voir aussi