Maison >base de données >tutoriel mysql >Pourquoi NULL = NULL renvoie-t-il False dans SQL Server ?
Comprendre pourquoi NULL = NULL est faux dans SQL Server
Dans SQL Server, une condition de clause WHERE
telle que nullParam = NULL
est évaluée comme fausse. Cela peut sembler contre-intuitif, étant donné que NULL
signifie souvent des données manquantes. La clé est de comprendre l'interprétation de NULL
par SQL Server.
NULL
ne représente pas simplement des données manquantes ; il représente une valeur inconnue ou inexistante. Par conséquent, comparer deux valeurs NULL
est intrinsèquement indéterminé. Nous ne pouvons pas dire avec certitude si deux inconnues sont égales ou inégales. Cette incertitude se traduit par une fausse évaluation.
Cela est conforme à la norme ANSI SQL-92. Par défaut, SQL Server fonctionne avec ANSI_NULLS ON
, appliquant ce comportement. Cependant, la définition de ANSI_NULLS OFF
change le résultat de la comparaison en vrai.
Considérez cet exemple :
<code class="language-sql">SET ANSI_NULLS OFF; IF NULL = NULL PRINT 'true'; ELSE PRINT 'false'; SET ANSI_NULLS ON; IF NULL = NULL PRINT 'true'; ELSE PRINT 'false';</code>
Avec ANSI_NULLS OFF
, le résultat est « vrai ». Avec ANSI_NULLS ON
(valeur par défaut), le résultat est « faux », démontrant comment ce paramètre contrôle la gestion par SQL Server des comparaisons NULL
. L'utilisation de IS NULL
est l'approche correcte pour vérifier les valeurs nulles.
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!