Maison >base de données >tutoriel mysql >Comment comparer correctement les valeurs NULL dans les requêtes SQL ?

Comment comparer correctement les valeurs NULL dans les requêtes SQL ?

DDD
DDDoriginal
2025-01-21 13:12:10309parcourir

How to Correctly Compare NULL Values in SQL Queries?

Compréhension approfondie de la comparaison des valeurs SQL NULL

En SQL, la valeur NULL représente une valeur inconnue ou vide. Lorsque vous comparez NULL à d'autres valeurs à l'aide d'opérateurs de comparaison réguliers (par exemple =, !=), le résultat est toujours NULL. Cela peut entraîner un comportement inattendu dans les résultats de requête.

La différence entre « où x est nul » et « où x = nul »

La syntaxe "where x is null" vérifie explicitement si la colonne x est NULL, tandis que "where x = null" tente de comparer la valeur de la colonne à un littéral NULL. Cette dernière comparaison échoue car elle aboutit à NULL, ce qui est toujours faux dans la clause WHERE.

Explication du comportement de la valeur NULL

SQL interprète NULL comme "inconnu", ce qui signifie que toute comparaison avec NULL entraînera un état inconnu. Par conséquent, les opérateurs de comparaison réguliers ne peuvent pas tester efficacement les valeurs NULL.

Syntaxe IS NULL et IS NOT NULL

Pour résoudre ce problème, SQL fournit la syntaxe "IS NULL" et "IS NOT NULL". Ces conditions particulières vérifient explicitement la présence de valeurs NULL dans la colonne. "IS NULL" renvoie vrai si la colonne est NULL, tandis que "IS NOT NULL" renvoie vrai si la colonne n'est pas NULL.

Exemple

La requête SQL suivante illustre la différence entre les opérateurs de comparaison réguliers et la syntaxe IS NULL :

<code class="language-sql">CREATE TABLE example (value INT);
INSERT INTO example VALUES (1), (NULL);

SELECT * FROM example WHERE value = NULL; -- 返回空结果
SELECT * FROM example WHERE value IS NULL; -- 返回包含NULL值的行</code>

Cette requête démontre que la comparaison régulière ne renvoie pas de lignes contenant des valeurs NULL, alors que la syntaxe IS NULL l'identifie correctement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn