Maison > base de données > tutoriel mysql > Pourquoi != échoue-t-il lors de la comparaison avec NULL en SQL ?

Pourquoi != échoue-t-il lors de la comparaison avec NULL en SQL ?

Linda Hamilton
Libérer: 2025-01-21 14:51:08
original
111 Les gens l'ont consulté

Why Does != Fail When Comparing to NULL in SQL?

SQL != Opérateur et l'énigme NULL

L'opérateur != (pas égal) de SQL présente un défi unique lorsqu'il s'agit de valeurs NULL. Bien qu'il compare efficacement les valeurs non NULL, son comportement avec NULL est contre-intuitif.

Le problème avec != NULL

Considérez ceci :

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn != NULL; -- Returns 0 rows
SELECT * FROM MyTable WHERE MyColumn  NULL; -- Also returns 0 rows</code>
Copier après la connexion

Ces requêtes, visant à trouver des lignes où MyColumn n'est pas NULL, renvoient étonnamment des ensembles de résultats vides. Ce n'est pas un bug ; c'est dû à la nature de NULL. NULL ne représente pas une valeur ; il représente l'absence d'une valeur. Par conséquent, comparer une valeur à NULL en utilisant != ou = donne toujours UNKNOWN, pas TRUE ou FALSE.

La solution : IS NOT NULL

Pour identifier avec précision les valeurs non NULL, utilisez le prédicat IS NOT NULL :

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn IS NOT NULL; -- Returns the expected rows</code>
Copier après la connexion

IS NOT NULL (et son homologue, IS NULL) sont spécifiquement conçus pour gérer les valeurs NULL dans les comparaisons SQL.

Comparaison avec des valeurs non NULL

L'opérateur != fonctionne comme prévu lors de la comparaison avec des valeurs non NULL :

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn != 'ValueX'; -- Returns rows where MyColumn is not 'ValueX'</code>
Copier après la connexion

Clé à retenir

Les requêtes SQL précises impliquant des valeurs NULL nécessitent l'utilisation de IS NOT NULL et IS NULL. Évitez d'utiliser != ou = pour NULL comparaisons afin d'éviter des résultats inattendus. Utilisez ces prédicats dédiés pour une gestion fiable de NULL dans vos instructions SQL.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal