Maison > base de données > tutoriel mysql > Pourquoi l'opérateur `!=` de MySQL exclut-il les lignes avec des valeurs NULL ?

Pourquoi l'opérateur `!=` de MySQL exclut-il les lignes avec des valeurs NULL ?

Susan Sarandon
Libérer: 2025-01-09 19:31:42
original
946 Les gens l'ont consulté

Why Does MySQL's `!=` Operator Exclude Rows with NULL Values?

MySQL : Comprendre les comparaisons de valeurs NULL

Aperçu :
Travailler efficacement avec MySQL nécessite une compréhension claire du comportement des valeurs NULL dans les opérations de comparaison. Cet article se concentre sur le comportement des valeurs NULL lors de l'utilisation de l'opérateur != (différent de).

Le problème : Supposons qu'un tableau comprenne une colonne CODE qui autorise les valeurs NULL. Pourquoi la requête ci-dessous omet-elle les lignes où CODE est NULL, même si != est utilisé ?

<code class="language-sql">SELECT * FROM TABLE WHERE CODE!='C'</code>
Copier après la connexion

La solution : L'opérateur != de MySQL ne produit pas de résultat vrai/faux lors de la comparaison d'une valeur non NULL à NULL. La comparaison est considérée comme indéterminée.

Pour gérer correctement les NULL, utilisez IS NULL ou IS NOT NULL. La requête suivante exclut avec précision les lignes avec CODE égal à « C » ou NULL :

<code class="language-sql">SELECT * FROM TABLE WHERE CODE IS NULL OR CODE!='C'</code>
Copier après la connexion

Cette approche garantit que les deux conditions sont évaluées indépendamment, en excluant uniquement les lignes satisfaisant l'une ou l'autre condition.

Clarifications supplémentaires : Bien que parfois vu dans la documentation ou les forums MySQL, CODE != '' ne remplace pas CODE IS NOT NULL. L'opérateur != compare les valeurs ; IS NULL vérifie l'absence de valeur.

Ces requêtes ne sont donc pas équivalentes :

<code class="language-sql">SELECT * FROM TABLE WHERE CODE != ''
SELECT * FROM TABLE WHERE CODE IS NOT NULL</code>
Copier après la connexion

L'utilisation de IS NULL et IS NOT NULL garantit une gestion et des tests appropriés des valeurs NULL dans les requêtes MySQL.

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