Gérer les valeurs NULL
DébutantNULL signifie « inconnu », pas « vide » ni « zéro » : toute comparaison avec NULL donne NULL (ni vrai ni faux).
SELECT NULL = NULL; -- NULL, pas true
SELECT NULL IS NULL; -- true
SELECT 1 IS DISTINCT FROM NULL; -- true (comparaison « null-safe »)
SELECT COALESCE(telephone, 'inconnu') FROM contacts; -- première valeur non nulle
SELECT NULLIF(quantite, 0) FROM lignes; -- NULL si égal à 0 : évite une division par zéro
La logique à trois valeurs#
| Expression | Résultat |
|---|---|
true AND NULL | NULL |
false AND NULL | false |
true OR NULL | true |
NOT NULL | NULL |
Un WHERE ne garde que les lignes dont la condition vaut true : celles qui valent NULL sont écartées.
Piège :
WHERE x NOT IN (SELECT y FROM t)renvoie zéro ligne sit.ycontient unNULL, carx <> NULLvautNULL. PréférezNOT EXISTS(voir la leçon sur les sous-requêtes).