</>
Plan du cours — 5/64

Gérer les valeurs NULL

Débutant

NULL 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#

ExpressionRésultat
true AND NULLNULL
false AND NULLfalse
true OR NULLtrue
NOT NULLNULL

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 si t.y contient un NULL, car x <> NULL vaut NULL. Préférez NOT EXISTS (voir la leçon sur les sous-requêtes).