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 ?
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!