Könnte jemand bitte das folgende Verhalten in SQL erklären?
SELECT * FROM MyTable WHERE MyColumn != NULL (0 Results)
SELECT * FROM MyTable WHERE MyColumn <> NULL (0 Results)
SELECT * FROM MyTable WHERE MyColumn IS NOT NULL (568 Results)
Könnte jemand bitte das folgende Verhalten in SQL erklären?
SELECT * FROM MyTable WHERE MyColumn != NULL (0 Results)
SELECT * FROM MyTable WHERE MyColumn <> NULL (0 Results)
SELECT * FROM MyTable WHERE MyColumn IS NOT NULL (568 Results)
<>
ist der Standard SQL-92; !=
ist sein Äquivalent. Beide werten für Werte aus, die NULL
ist nicht NULL
ist ein Platzhalter für das Fehlen eines Wertes.
Aus diesem Grund können Sie nur IS NULL
/ IS NOT NULL
als Prädikate für solche Situationen.
Dieses Verhalten ist nicht spezifisch für SQL Server. Alle standardkonformen SQL-Dialekte funktionieren auf die gleiche Weise.
備考 : Zum Vergleich, ob Ihr Wert ist nicht null verwenden Sie IS NOT NULL
, während zum Vergleich mit nicht null Wert, verwenden Sie <> 'YOUR_VALUE'
. Ich kann nicht sagen, ob mein Wert gleich oder nicht gleich NULL ist, aber ich kann sagen, ob mein Wert NULL oder NICHT NULL ist. Ich kann vergleichen, ob mein Wert etwas anderes als NULL ist.
Beachten Sie, dass dieses Verhalten dem Standardverhalten (ANSI) entspricht.
Wenn Sie:
SET ANSI_NULLS OFF
http://msdn.microsoft.com/en-us/library/ms188048.aspx
Sie werden unterschiedliche Ergebnisse erhalten.
SET ANSI_NULLS OFF
wird es in Zukunft offenbar nicht mehr geben...
Wir verwenden
SELECT * FROM MyTable WHERE ISNULL(MyColumn, ' ') = ' ';
um alle Zeilen zurückzugeben, in denen MyColumn NULL ist, oder alle Zeilen, in denen MyColumn eine leere Zeichenfolge ist. Für viele "Endbenutzer" ist die Frage NULL vs. leere Zeichenfolge eine Unterscheidung ohne Notwendigkeit und ein Punkt der Verwirrung.
In SQL wird alles, was Sie auswerten/berechnen, mit NULL
resultiert in UNKNOWN
Das ist der Grund SELECT * FROM MyTable WHERE MyColumn != NULL
o SELECT * FROM MyTable WHERE MyColumn <> NULL
liefert 0 Ergebnisse.
Einen Scheck ausstellen für NULL
Werte, wird die Funktion isNull bereitgestellt.
Außerdem können Sie die IS
Operator, den Sie in der dritten Abfrage verwendet haben.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.