Warum ist null ungleich null false?

War ich der Lektüre dieses Artikels:
Erhalten null == null in SQL

Und der Konsens ist, dass, wenn Sie versuchen zu testen Gleichheit zwischen zwei (nullable) sql-Spalten, der richtige Ansatz ist:

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

Wenn A und B NULL sind, (A=B) noch gibt FALSE zurück, da NULL nicht gleich NULL. Deshalb ist die zusätzliche überprüfung erforderlich ist.

Was beim testen von Ungleichheiten? Aus der obigen Diskussion, es machte mich denken, dass zu testen Ungleichheit, die ich brauchen würde, um etwas zu tun wie:

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

Allerdings habe ich gemerkt, dass das nicht nötig ist (zumindest nicht auf informix 11.5), und ich kann das einfach tun:

where (A<>B)

Wenn A und B NULL ist, gibt diese Methode FALSE zurück. Wenn der Wert NULL ist nicht gleich NULL, dann sollte dies nicht TRUE zurückgeben?

BEARBEITEN
Dies sind alles gute Antworten, aber ich denke, meine Frage war ein wenig vage. Lassen Sie mich anders formulieren:

Gegeben, dass entweder A oder B NULL sein kann, ist es genug, um zu überprüfen, Ihre Ungleichheit mit

where (A<>B)

Oder muss ich explizit überprüfen Sie es wie folgt:

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

FINDEN Sie auf dieser thread für die Antwort auf diese Frage.

InformationsquelleAutor der Frage |

Schreibe einen Kommentar