Was bewirkt 'SET ANSI_NULLS OFF'?

7

Was macht SET ANSI_NULLS OFF ?

    
user47957 04.01.2009, 23:01
quelle

4 Antworten

16

Von MSDN:

  

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.

    
dkretz 04.01.2009 23:03
quelle
9

Ä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.

    
Otávio Décio 04.01.2009 23:04
quelle
0

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

    
Rohit 25.10.2012 02:57
quelle
0

SET ANSI_NULLS OFF weist den Server an, Anweisungen zu bewerten, die NULL mit nicht standardmäßigen Semantiken enthalten.

%Vor%

Sie sollten niemals neuen Code erstellen mit der nicht standardmäßigen Semantikeinstellung von SET ANSI_NULLS OFF , weil:

  • Es ist niemals notwendig,
  • Wenn sich Datenbankabfragen mit der Rich-Semantik verhalten, die auftritt, wenn NULL anders als ein anderer Wert behandelt wird (z. B. in einer WHERE -Klausel), sollten Werte im Vergleich zu NULL immer False / UNKNOWN,
  • Es macht Code, der schwieriger zu warten ist, da Entwickler möglicherweise nicht erkennen, dass sie die Nicht-Standard-Einstellung verwendet oder von ihr verwirrt ist, und
  • Microsoft hat gewarnt , dass in einer zukünftigen Version von SQL Server, dass die Einstellung einen expliziten Fehler verursacht.
Michael Currie 01.10.2017 02:37
quelle

Tags und Links