Verstehen, warum NULL = NULL
in SQL Server „False“ zurückgibt
Die Verarbeitung von NULL
-Werten durch SQL Server führt oft zu unerwarteten Ergebnissen. Der =
-Operator gibt beim Vergleich von nullfähigen Spalten <code>false</code> zurück, da NULL
einen unbekannten oder fehlenden Wert angibt.
Eine WHERE
-Klauselbedingung wie nullParam = NULL
ergibt immer <code>false</code>. Dies liegt daran, dass es unmöglich ist, die Gleichheit zwischen zwei unbekannten Größen definitiv zu bestätigen.
Der SQL-92-Standard schreibt dieses Verhalten vor: NULL = NULL
ist weder wahr noch falsch; es ist undefiniert.
Die Auswirkungen der ansi_nulls
Einstellung
Das Verhalten ändert sich je nach ansi_nulls
Einstellung dramatisch. Wenn ansi_nulls
auf OFF
gesetzt ist, ergibt NULL = NULL
überraschenderweise <code>true</code>. Dies wird unten demonstriert:
Codebeispiel:
<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>
Ausgabe:
Mit ansi_nulls OFF
:
<code>true</code>
Mit ansi_nulls ON
:
<code>false</code>
Best Practices für den Umgang mit NULL-Werten
Aufgrund dieser Variabilität ist es wichtig, die ansi_nulls
-Einstellung zu kennen, wenn Sie mit NULL
-Vergleichen arbeiten. Um Mehrdeutigkeiten zu vermeiden, verwenden Sie bei der Suche nach IS NULL
-Werten immer IS NOT NULL
und NULL
. Dies gewährleistet unabhängig von der ansi_nulls
-Einstellung ein konsistentes und vorhersehbares Verhalten. Dies ist der empfohlene Ansatz für zuverlässigen SQL-Code.
Das obige ist der detaillierte Inhalt vonWarum gibt „NULL = NULL' in SQL Server „False' zurück (und wie wirkt sich „ansi_nulls' darauf aus)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!