pourquoi est nul de ne pas égal à null false

J'ai été la lecture de cet article:
Obtenir null == null en SQL

Et le consensus est que lorsque vous essayez de tester l'égalité entre deux (nullable) les colonnes sql, la bonne approche est:

where ((A=B) OR (A IS NULL AND B IS NULL))

Lorsque A et B sont NULS, (A=B) renvoie toujours FAUX, car NULLE n'est pas égal à NULL. C'est pourquoi la vérification supplémentaire est nécessaire.

Ce sujet lors de l'essai d'inégalités? La suite de la discussion ci-dessus, il m'a fait penser que pour tester les inégalités j'aurais besoin de faire quelque chose comme:

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

Cependant, j'ai remarqué que ce n'est pas nécessaire (au moins pas sur informix 11.5), et que je peux le faire:

where (A<>B)

Si A et B sont NULS, ce renvoie la valeur FALSE. Si la valeur NULL n'est pas égal à NULL, alors il faut bien que ce retour VRAI?

MODIFIER

Ce sont toutes de bonnes réponses, mais je pense que ma question est un peu vague. Permettez-moi de reformuler:

Étant donné que A ou B peut être NULLE, est-ce suffisant pour vérifier leur inégalité de traitement avec les

where (A<>B)

Ou ai-je besoin explicitement vérifier comme ceci:

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

Reportez-vous à cette fil pour la réponse à cette question.

  • En bref, anything = NULL est NUL (ni vrai ni faux). et anything <> NULL est NULL.