Maison >base de données >tutoriel mysql >Pourquoi MySQL exclut-il les valeurs NULL lors de l'utilisation de l'opérateur != dans une clause WHERE ?

Pourquoi MySQL exclut-il les valeurs NULL lors de l'utilisation de l'opérateur != dans une clause WHERE ?

DDD
DDDoriginal
2025-01-09 19:51:41929parcourir

Why Does MySQL Exclude NULL Values When Using the != Operator in a WHERE Clause?

Comparaison MySQL avec des valeurs NULL

Comprendre comment MySQL gère ces comparaisons est essentiel lorsqu'il s'agit de colonnes qui autorisent les valeurs NULL, comme la colonne CODE dans l'exemple. Pourquoi la requête suivante exclut-elle les lignes où CODE est NULL ?

<code class="language-sql">SELECT * from TABLE where CODE!='C'</code>

Cela est dû au fait que l'opérateur != (différent de) ne teste pas explicitement les valeurs NULL. Il vérifie uniquement si la valeur n'est pas égale à « C ». Puisque NULL est une valeur spéciale qui indique une valeur manquante, elle n’est ni égale ni inégale à une valeur spécifique.

Pour inclure des valeurs NULL, vous devez utiliser l'opérateur IS NULL ou IS NOT NULL. Ces opérateurs vérifient explicitement la présence de valeurs NULL. La requête correcte doit être :

<code class="language-sql">SELECT * from TABLE where CODE IS NULL OR CODE!='C'</code>

En utilisant IS NULL ou IS NOT NULL, la requête s'assure qu'elle contient des lignes où CODE est NULL, ainsi que des lignes où CODE n'est pas égal à 'C'. En effet, l'opérateur OR traite les deux conditions comme des critères valides pour la correspondance des lignes.

En résumé, lorsque vous comparez des colonnes pouvant contenir des valeurs NULL, utilisez toujours l'opérateur IS NULL ou IS NOT NULL pour tester explicitement la présence de valeurs NULL. Sinon, les résultats de la comparaison pourraient ne pas être ceux attendus.

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