SQL IS NULL / IS NOT NULL

Dans le langage SQL, l’opérateur IS permet de filtrer les résultats qui contiennent la valeur NULL. Cet opérateur est indispensable car la valeur NULL est une valeur inconnue et ne peut par conséquent pas être filtrée par les opérateurs de comparaison (cf. égal, inférieur, supérieur ou différent).

Syntaxe

Pour filtrer les résultats où les champs d’une colonne sont à NULL il convient d’utiliser la syntaxe suivante:

SELECT *
FROM `table`
WHERE nom_colonne IS NULL

A l’inverse, pour filtrer les résultats et obtenir uniquement les enregistrements qui ne sont pas null, il convient d’utiliser la syntaxe suivante:

SELECT *
FROM `table`
WHERE nom_colonne IS NOT NULL

A savoir : l’opérateur IS retourne en réalité un booléen, c’est à dire une valeur TRUE si la condition est vrai ou FALSE si la condition n’est pas respectée. Cet opérateur est souvent utilisé avec la condition WHERE mais peut aussi trouvé son utilité lorsqu’une sous-requête est utilisée.

Exemple

Imaginons une application qui possède une table contenant les utilisateurs. Cette table possède 2 colonnes pour associer les adresses de livraison et de facturation à un utilisateur (grâce à une clé étrangère). Si cet utilisateur n’a pas d’adresse de facturation ou de livraison, alors le champ reste à NULL.

Table « utilisateur » :

idnomdate_inscriptionfk_adresse_livraison_idfk_adresse_facturation_id
23Grégoire2013-02-121212
24Sarah2013-02-17NULLNULL
25Anne2013-02-211314
26Frédérique2013-03-02NULLNULL

Exemple 1 : utilisateurs sans adresse de livraison

Il est possible d’obtenir la liste des utilisateurs qui ne possèdent pas d’adresse de livraison en utilisant la requête SQL suivante:

SELECT *
FROM `utilisateur`
WHERE `fk_adresse_livraison_id` IS NULL

Résultat :

idnomdate_inscriptionfk_adresse_livraison_idfk_adresse_facturation_id
24Sarah2013-02-17NULLNULL
26Frédérique2013-03-02NULLNULL

Les enregistrements retournés montrent bien que seul les utilisateurs ayant la valeur NULL pour le champ de l’adresse de livraison.

Exemple 2 : utilisateurs avec une adresse de livraison

Pour obtenir uniquement les utilisateurs qui possèdent une adresse de livraison il convient de lancer la requête SQL suivante:

SELECT *
FROM `utilisateur`
WHERE `fk_adresse_livraison_id` IS NOT NULL

Résultat :

idnomdate_inscriptionfk_adresse_livraison_idfk_adresse_facturation_id
23Grégoire2013-02-121212
25Anne2013-02-211314

Les lignes retournés sont exclusivement celles qui n’ont pas une valeur NULL pour le champ de l’adresse de livraison.

Partager