Maison >base de données >tutoriel mysql >Pourquoi les opérateurs '!=' et '<>' ne parviennent-ils pas à comparer avec NULL en SQL ?

Pourquoi les opérateurs '!=' et '<>' ne parviennent-ils pas à comparer avec NULL en SQL ?

DDD
DDDoriginal
2025-01-21 14:57:14884parcourir

Why Do " Les opérateurs ne parviennent pas à comparer avec NULL en SQL ? " />

Comprendre les comparaisons NULL en SQL

SQL utilise "!=" et "<>" pour les contrôles d’inégalités. Cependant, ces opérateurs se comportent de manière inattendue avec NULL valeurs.

Le problème :

Considérez ces requêtes SQL :

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn != NULL;
SELECT * FROM MyTable WHERE MyColumn <> NULL;
SELECT * FROM MyTable WHERE MyColumn IS NOT NULL;</code>

Les deux premières requêtes renvoient des ensembles de résultats vides, tandis que la troisième renvoie correctement 568 lignes. Pourquoi cet écart ?

Explication :

"!=" et "<>" comparer les valeurs. NULL, cependant, n'est pas une valeur ; cela signifie l’absence de valeur. Par conséquent, ces opérateurs ne conviennent pas aux NULL comparaisons.

Utilisez IS NULL ou IS NOT NULL à la place. Ces prédicats vérifient spécifiquement la présence ou l’absence d’une valeur. Le succès de la troisième requête vient de son utilisation correcte de IS NOT NULL.

Points clés :

  • Pour tester les valeurs nonNULL, utilisez IS NOT NULL.
  • Utilisez "<>" ou "!=" pour comparer avec des valeurs spécifiques non NULL.
  • NULL ne peut être considéré comme égal ou inégal à aucune valeur, car il représente des données manquantes.

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