Warum die NULL-Ungleichung falsch ist
Die Anwendung der ternären Logik von SQL spielt eine entscheidende Rolle beim Verständnis, warum NULL nicht gleich NULL ist. In der ternären Logik stellt NULL einen unbekannten Wert und keinen bestimmten Wert dar. Dieses Konzept leitet die Bewertung von Gleichheits- und Ungleichheitstests.
Bei der Bewertung der Gleichheit werden zwei NULL-Werte weder als gleich noch als ungleich betrachtet. Dies liegt daran, dass der Zustand des Unbekanntseins nicht definitiv mit einem anderen unbekannten Zustand verglichen werden kann. Somit gibt der Ausdruck (NULL = NULL) NULL zurück, was das Fehlen einer eindeutigen Antwort anzeigt.
Bei Ungleichheitstests gibt (NULL != NULL) auch FALSE zurück. Dies liegt daran, dass die ternäre Logik vorschreibt, dass ein unbekannter Wert nicht definitiv als ungleich zu einem anderen unbekannten Wert angegeben werden kann. Daher bleibt unbekannt, ob sie gleich sind oder nicht.
Auswirkungen auf Ungleichheitsprüfungen
Die obige Diskussion verdeutlicht, dass der Ausdruck (A != B) ausreichend ist für Testen der Ungleichheit, auch wenn entweder A oder B NULL ist. Dies liegt daran, dass die Regeln der ternären Logik vorschreiben, dass jede Operation mit einem NULL-Wert unbekannt bleibt. Daher gibt der Ausdruck (A != B) FALSE zurück, wenn sowohl A als auch B NULL sind, was auf das Fehlen einer endgültigen Antwort hinweist.
Wenn Sie explizit ein TRUE-Ergebnis benötigen, wenn sowohl A als auch B NULL sind, dann ist dies der Fall kann den ausführlicheren Ausdruck verwenden:
WHERE ((A != B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
Es ist jedoch wichtig zu beachten, dass diese Bedingung für einen bestimmten Anwendungsfall gilt, bei dem ein TRUE-Ergebnis für NULL-Werte gewünscht wird. In den meisten Fällen reicht der einfachere Ausdruck (A != B) aus, da er den Prinzipien der ternären Logik folgt.
Das obige ist der detaillierte Inhalt vonWarum gibt „NULL != NULL' in SQL FALSE zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!