Heim >Datenbank >MySQL-Tutorial >Warum wird NULL = NULL in SQL Server als „Falsch' ausgewertet?
Eindeutiger NULL-Vergleich von SQL Server: Warum NULL = NULL oft falsch ist
SQL Server behandelt NULL-Werte anders als viele andere Programmiersprachen. Eine häufige Ursache für Verwirrung ist die Tatsache, dass NULL = NULL
normalerweise zu FALSE
ausgewertet wird. Das ist kein Fehler; Es handelt sich um eine bewusste Designentscheidung, die in der Definition von NULL selbst verwurzelt ist.
In SQL Server stellt NULL einen unbekannten oder fehlenden Wert dar. Daher ist der Vergleich zweier NULL-Werte wie der Vergleich zweier Unbekannter – es ist unmöglich, definitiv zu sagen, ob sie gleich sind, da ihre Werte undefiniert sind. Das Ergebnis von NULL = NULL
ist oft FALSE
(oder manchmal NULL
, je nach Kontext und Systemeinstellungen).
Dieses Verhalten ist auf den ANSI SQL-92-Standard zurückzuführen. Es ist jedoch wichtig, die Auswirkungen der ansi_nulls
-Einstellung in SQL Server zu verstehen.
Die Rolle von ansi_nulls
Die Einstellung ansi_nulls
bestimmt, wie SQL Server NULL-Vergleiche interpretiert.
ansi_nulls ON
(Standard): Unter dieser Einstellung (Standard) wird NULL = NULL
zu FALSE
ausgewertet, entsprechend dem ANSI SQL-92-Standard.
ansi_nulls OFF
: Mit dieser Einstellung wird NULL = NULL
zu TRUE
ausgewertet. Dieses Verhalten spiegelt die Art und Weise wider, wie NULL in vielen anderen Programmiersprachen behandelt wird, wo es oft als besonderer Wert betrachtet wird, der einen undefinierten Zustand darstellt.
Anschauliches Beispiel:
Der folgende Codeausschnitt verdeutlicht den Unterschied:
<code class="language-sql">SET ANSI_NULLS OFF; IF NULL = NULL PRINT 'TRUE'; ELSE PRINT 'FALSE'; SET ANSI_NULLS ON; IF NULL = NULL PRINT 'TRUE'; ELSE PRINT 'FALSE';</code>
Mit ansi_nulls OFF
geben beide IF
-Anweisungen „TRUE“ aus. Mit ansi_nulls ON
gibt die erste IF
-Anweisung „FALSE“ aus, während die zweite auch „FALSE“ ausgibt
Das Verständnis der ansi_nulls
-Einstellung und der inhärenten Mehrdeutigkeit von NULL-Vergleichen ist für das Schreiben von robustem und fehlerfreiem SQL Server-Code unerlässlich. Achten Sie immer darauf, wie NULL-Werte in Ihren Abfragen behandelt werden, um unerwartete Ergebnisse zu vermeiden.
Das obige ist der detaillierte Inhalt vonWarum wird NULL = NULL in SQL Server als „Falsch' ausgewertet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!