Warum Ungleichheit mit NULL nicht immer wahr ist
Beim Vergleich von NULL-Werten mit dem Ungleichheitsoperator ("!=") ist dies der Fall Oft wird angenommen, dass das Ergebnis wahr sein sollte, da NULL nicht sich selbst entspricht. In bestimmten Kontexten wie SQL ist diese Annahme jedoch nicht gültig.
Ternäre Logik von SQL
In SQL stellt NULL einen unbekannten Wert dar. Dies führt einen dritten logischen Zustand jenseits von wahr und falsch ein, der als „unbekannt“ bekannt ist. Infolgedessen folgen Ungleichheitsvergleiche mit NULL einer ternären Logik, wobei das Ergebnis eine von drei Optionen sein kann:
Beispiel:
Überlegen die folgende Aussage:
WHERE (A <> B)
Wenn A und B beide NULL sind, gibt der obige Ausdruck „unbekannt“ zurück, da es keine Möglichkeit gibt, festzustellen, ob sie wirklich ungleich sind oder ob beide unbekannt sind.
Implikationen für die Ungleichheitsprüfung
Diese ternäre Logik schreibt vor, dass eine einfache Ungleichheitsprüfung mit NULL durchgeführt werden muss gibt möglicherweise nicht immer true zurück. Um genaue Ergebnisse zu gewährleisten, ist eine explizite Prüfung auf NULL-Bedingungen mit „IS NULL“ und „IS NOT NULL“ erforderlich.
Der folgende Ausdruck verarbeitet beispielsweise Ungleichheitsvergleiche mit NULL korrekt:
WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
Durch die Einbindung dieser expliziten Prüfungen kann die Datenbank das korrekte logische Ergebnis (wahr, falsch oder unbekannt) für alle möglichen Fälle mit NULL-Werten ermitteln.
Das obige ist der detaillierte Inhalt vonWarum gibt „NULL != NULL' in SQL nicht immer „True' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!