CodeGym /Cours /SQL SELF /Vérification des valeurs NULL : IS NULL et IS NOT NULL

Vérification des valeurs NULL : IS NULL et IS NOT NULL

SQL SELF
Niveau 9 , Leçon 1
Disponible

Aujourd'hui, on continue à explorer NULL — le héros invisible des bases de données. Si tu penses encore que NULL c'est juste "rien", t'as raison, mais pas complètement. Dans cette leçon, on va apprendre à vérifier s'il y a des NULL dans nos données, et quoi faire avec. Alors, prêt à traquer l'absence de valeurs ?

On commence simple — imagine que tu bosses avec la base de données d'une boutique en ligne. T'as une table des commandes, et pour certaines commandes, y'a pas d'info sur les commentaires, alors que pour d'autres, y'a des remarques. Si tu veux chercher toutes les commandes sans remarques, mais que tu utilises les comparaisons classiques =, <>, tu vas être surpris... Pourquoi ? Parce que NULL c'est un cas spécial !

En SQL, pour checker la présence ou l'absence de NULL, on utilise IS NULL et IS NOT NULL. Ces opérateurs nous aident à gérer NULL et à choper les bonnes données.

Vérifier les valeurs avec IS NULL

IS NULL sert à vérifier si une colonne ou une expression contient la valeur NULL.

SELECT *
FROM orders
WHERE comment IS NULL;

Cette requête va retourner toutes les lignes où la colonne comment est à NULL. Pratique si tu veux trouver les commandes sans remarques.

Voilà un exemple de table orders :

id customer_name total_amount comment
1 Otto Art 1500 "Livraison urgente"
2 Maria Chi 3000 NULL
3 Alex Lin 2000 ''
4 Anna Song 5000 NULL

Requête :

SELECT id, customer_name
FROM orders
WHERE comment IS NULL;

Résultat :

id customer_name
2 Maria Chi
4 Anna Song

Remarque que les lignes avec la chaîne vide '' ne sont pas incluses ici, parce que '' c'est pas NULL.

Vérifier les valeurs avec IS NOT NULL

IS NOT NULL fait l'inverse ; il vérifie si la valeur n'est pas NULL. Par exemple, si tu veux toutes les commandes avec des commentaires renseignés :

SELECT *
FROM orders
WHERE comment IS NOT NULL;

Cette requête va retourner seulement les lignes où la colonne comment a une valeur (y compris les chaînes vides '').

Exemple

La table orders reste la même.

id customer_name total_amount comment
1 Otto Art 1500 "Livraison urgente"
2 Maria Chi 3000 NULL
3 Alex Lin 2000 ''
4 Anna Song 5000 NULL

On lance la requête :

SELECT id, customer_name, comment
FROM orders
WHERE comment IS NOT NULL;

Résultat :

id customer_name comment
1 Otto Art "Livraison urgente"
3 Alex Lin ''

Fais gaffe, la ligne avec la chaîne vide '' est incluse. SQL considère que c'est une valeur "non vide".

Quand utiliser IS NULL et IS NOT NULL ?

Voici quelques scénarios :

  1. Filtrage des données : tu veux exclure les enregistrements incomplets où il manque des valeurs.
  2. Gestion des erreurs : parfois NULL peut vouloir dire qu'il y a eu une erreur de saisie, et tu veux isoler ces lignes.
  3. Analyse des données : compter le nombre d'enregistrements avec des valeurs manquantes aide à voir la qualité des données.

Application pratique

On teste quelques cas pratiques :

Exercice 1 : Sélectionner les étudiants sans date de naissance renseignée

Imaginons que tu as une table students :

id name birth_date
1 Otto Art 2000-05-10
2 Maria Chi NULL
3 Alex Lin 1998-12-30
4 Anna Song NULL

Requête :

SELECT name
FROM students
WHERE birth_date IS NULL;

Résultat :

name
Maria Chi
Anna Song

Cette requête est utile pour trouver les étudiants dont il faut compléter la date de naissance.

Exercice 2 : Sélectionner les commandes avec commentaires

id customer_name total_amount comment
1 Otto Art 1500 "Livraison urgente"
2 Maria Chi 3000 NULL
3 Alex Lin 2000 ''
4 Anna Song 5000 NULL

Pour la table orders, on peut trouver les commandes avec des commentaires remplis :

SELECT customer_name, comment
FROM orders
WHERE comment IS NOT NULL;

Résultat :

customer_name comment
Otto Art "Livraison urgente"
Alex Lin ''

Comparaison avec les opérateurs classiques

Maintenant, faisons un pas de côté et essayons une requête "fausse" pour checker NULL :

SELECT *
FROM orders
WHERE comment = NULL;

Surpris ? Cette requête ne retourne aucune ligne, même celles où comment est clairement NULL. C'est parce qu'on ne peut pas comparer NULL avec les opérateurs standards. Pour ce genre de comparaisons, il faut obligatoirement utiliser IS NULL.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION