Der SQL-92-Standard erfordert, dass ein Gleichheitsvergleich (=) oder nicht gleich (& lt; & gt;) Vergleich mit einem Nullwert zu FALSE ausgewertet wird. Wenn SET ANSI_NULLS auf ON gesetzt ist, gibt eine SELECT-Anweisung, die WHERE column_name = NULL verwendet, null Zeilen zurück, selbst wenn in column_name Nullwerte vorhanden sind. Eine SELECT-Anweisung mit WHERE column_name & lt; & gt; NULL gibt null Zeilen zurück, auch wenn es in Spalte_Name Werte ohne NULL gibt.
Wenn SET ANSI_NULLS OFF ist, folgen die Vergleichsoperatoren Equals (=) und Not Equal To (& lt; & gt;) nicht dem SQL-92-Standard. Eine SELECT-Anweisung mit WHERE column_name = NULL gibt die Zeilen mit null-Werten in column_name zurück. Eine SELECT-Anweisung mit WHERE column_name & lt; & gt; NULL gibt die Zeilen mit Nicht-Null-Werten in der Spalte zurück. Außerdem wird eine SELECT-Anweisung mit WHERE column_name & lt; & gt; XYZ_value gibt alle Zeilen zurück, die kein XYZ-Wert sind und die nicht NULL sind.
Ändert die Art und Weise, wie NULL
s sich verhält. NULL
s in ANSI ergibt Dinge wie
NULL = NULL
- & gt; falsch
NULL <> NULL
- & gt; falsch
Mit ANSI_NULLS
aus, ( NULL = NULL
) - & gt; wahr.
Wenn eingeschaltet, zählen die Nullwerte nicht und geben 0 zurück.
Wenn diese Option aktiviert ist, gibt jede Abfrage, die einen Wert mit einem Nullwert vergleicht, eine 0 zurück.
Beispiel: SET ANSI_NULLS EIN SELECT empname FROM emp1 WHERE phone = NULL
Erklärung: Es wird nichts zurückgegeben, da SET ANSI_NULLS auf ON gesetzt ist.
Quelle:
Danke,
Rohit
SET ANSI_NULLS OFF
weist den Server an, Anweisungen zu bewerten, die NULL
mit nicht standardmäßigen Semantiken enthalten.
Sie sollten niemals neuen Code erstellen mit der nicht standardmäßigen Semantikeinstellung von SET ANSI_NULLS OFF
, weil:
NULL
anders als ein anderer Wert behandelt wird (z. B. in einer WHERE
-Klausel), sollten Werte im Vergleich zu NULL
immer False / UNKNOWN, Tags und Links sql-server