Stimmen Sie mit dem überein, was alle anderen schon gesagt haben. wenn Sie aus einem anderen Blickwinkel zu kommentieren, versuchen ansi_nulls
zu Aus-Einstellung, können Sie bekommen, was Sie erwarten:
set ansi_nulls off
if 1 = null
select 'a'
else
select 'b' -- Returned
if 1 != null
select 'a' -- Returned
else
select 'b'
Mehr Informationen von Online:
Wenn SET ANSI_NULLS ausgeschaltet ist, das Equals (=) und nicht gleich (<>) Vergleichsoperatoren folgen nicht dem ISO-Standard. Eine SELECT -Anweisung, die WHERE column_name = NULL verwendet, gibt die Zeilen mit Nullwerten in column_name zurück. Eine SELECT-Anweisung, die WHERE verwendet column_name <> NULL gibt die Zeilen zurück, die in der Spalte nichtnull Werte enthalten. Außerdem gibt eine SELECT-Anweisung, die WHERE column_name <> XYZ_value verwendet, alle Zeilen zurück, die nicht XYZ_value sind und die nicht NULL sind.
Das ist ansi_nulls off
erklärt. Jedoch kann es nicht versucht, einfach abschalten, weil:
In einer zukünftigen Version von SQL Server, ANSI_NULLS immer ON sein und alle Anwendungen, die explizit die Option auf OFF gesetzt wird ein Fehler erzeugen. Vermeiden Sie die Verwendung dieser Funktion in neuen Entwicklungsarbeiten, und planen Sie , um Anwendungen zu ändern, die diese Funktion derzeit verwenden.
die unten Empfehlung folgen statt:
Für ein Skript wie vorgesehen arbeiten, unabhängig von der ANSI_NULLS Datenbank-Option oder die Einstellung von SET ANSI_NULLS, Verwendung IS NULL und IS NOT NULL in Vergleiche Das könnte Nullwerte enthalten.
if 1 is null
select 'a'
else
select 'b' -- Returned
if 1 is not null
select 'a' -- Returned
else
select 'b'
Sie können nicht gleich 'nichts'. – sircodesalot
'NULL' ist niemals gleich, ungleich größer oder kleiner als alles andere. –
Wirklich? Es kann nicht gleich sein? –