Comparaison des valeurs NULL dans MySQL
Dans MySQL, comparer des colonnes contenant des valeurs NULL peut présenter des défis car le comportement est différent des comparaisons d'égalité standard. Cet article explique pourquoi une requête telle que « SELECT * from TABLE which CODE!='C' » exclut les lignes avec CODE=NULL, même si « C » n'est pas NULL.
Comportement de comparaison NULL
Lors de la comparaison d'une colonne à une valeur non NULL (telle que "CODE!='C'"), la requête renvoie les lignes où CODE correspond à "C" et exclut toutes les autres valeurs, y compris NULL. Ce comportement résulte du fait que SQL traite NULL comme une valeur unique qui ne participe pas aux comparaisons standard.
Pour inclure des valeurs NULL dans une comparaison, elles doivent être vérifiées explicitement à l'aide de l'opérateur IS NULL ou IS NOT NULL. Par exemple, la requête suivante renverra toutes les lignes où CODE est NULL ou différent de « C » :
<code class="language-sql">SELECT * from TABLE where CODE IS NULL OR CODE!='C'</code>
Explication du comportement CODE!='C'
La raison pour laquelle "CODE!='C'" ne renvoie pas de lignes avec CODE=NULL est que la requête sera évaluée comme fausse pour toute comparaison impliquant NULL. Même si « C » n’est pas NULL, le comparer à une valeur NULL donnera toujours faux.
Opérateurs de comparaison alternatifs
MySQL fournit un opérateur de comparaison alternatif "<=" (inférieur ou égal à) qui peut être utilisé pour comparer des valeurs contenant NULL. L'évaluation de "x <= y" renvoie vrai si x est inférieur, égal à ou NULL, faux dans le cas contraire.
Vous pouvez renvoyer toutes les lignes où CODE est NULL ou différent de 'C' en utilisant "CODE <= 'C' OR CODE IS NULL" au lieu de "CODE!='C'".
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!