Maison >base de données >tutoriel mysql >Pourquoi « A B » suffit-il pour les comparaisons d'inégalités avec les colonnes nullables dans SQL ?

Pourquoi « A B » suffit-il pour les comparaisons d'inégalités avec les colonnes nullables dans SQL ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-03 04:05:38684parcourir

Why Does `A  B` Suffice for Inequality Comparisons with Nullable Columns in SQL?

Paradoxe d'inégalité nulle résolu

En SQL, tester l'égalité entre deux colonnes nullables nécessite des vérifications supplémentaires pour gérer le cas où les deux colonnes sont NULL. En effet, NULL, représentant une valeur inconnue, ne peut pas être comparé directement à un autre NULL. Cependant, lors du test de l'inégalité, une approche plus simple peut être utilisée.

Inégalité avec les colonnes nullables

Au départ, il était supposé que tester l'inégalité entre les colonnes nullables nécessiterait une procédure complexe. condition :

WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))

Cependant, dans de nombreuses implémentations SQL, telles que Informix 11.5, un la condition suffit :

WHERE (A <> B)

Comprendre le comportement

Ce comportement découle de la logique ternaire, où NULL est traité comme une valeur inconnue. Considérons les cas suivants :

  • Si A et B sont tous deux connus (non NULL), le test d'inégalité est simple.
  • Si A ou B est NULL, le résultat est indéterminé. En logique ternaire, une valeur inconnue n’est égale à aucune autre valeur, y compris elle-même. Par conséquent, l'expression (A = B) renvoie inconnu lorsque l'un ou l'autre des opérandes est NULL.
  • Si A et B sont NULL, le test d'inégalité est également inconnu. En effet, NULL n'est ni égal ni non égal à lui-même.

Condition d'inégalité simplifiée

Ainsi, le simplifié (A <> B) La condition fonctionne correctement car elle ne tente pas de comparer directement les valeurs NULL. Au lieu de cela, il s'appuie sur le principe de logique ternaire selon lequel les valeurs inconnues ne sont égales à rien.

Conclusion

Lors du test d'inégalité entre des colonnes nullables, il suffit d'utiliser le condition simple (A <> B). En effet, NULL, en tant que valeur inconnue, ne peut pas être directement comparé à d'autres valeurs, y compris elle-même. L'utilisation de l'approche logique ternaire où NULL est considéré comme inconnu simplifie l'expression et garantit des résultats précis.

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