Wenn Sie eine Abfrage generieren, um die Daten in die Tabelle "MyTab" für die Spalte einzufügen --- Alter, Geschlecht, Geburtsdatum, ID
%Vor%Was ist der Wert in der Spalte Sex & amp; DAB? Ist es NULL?
Wenn der Wert NULL ist, dann ---
%Vor%oben Abfrage gibt Ausgang ---- keine Zeilen ausgewählt --- warum ??
wenn der Wert nicht NULL ist, dann ---
%Vor%obige Abfrage gibt die Ausgabe ---- wie ??
NULL
ist ein spezieller Wert in SQL, der die Abwesenheit von Daten angibt. Daher können keine Abfragen wie:
NULL
kann nicht mit irgendetwas verglichen werden, einschließlich NULL
selbst. Stattdessen benötigen Sie:
In diesem Fall fügen Sie jedoch wirklich einen leeren Wert in Sex
und DOB
ein.
Und leerer Wert ist nicht NULL
. Sie müssten nachfragen:
Von Null (SQL)
Missverständnis darüber, wie Null funktioniert die Ursache für eine große Anzahl von Fehlern in SQL-Code, beide in ISO-Standard SQL Anweisungen und in der spezifischen SQL Dialekte von der realen Welt unterstützt Datenbankmanagementsystem. Diese Fehler sind normalerweise das Ergebnis von Verwirrung zwischen Null und entweder 0 (Null) oder eine leere Zeichenfolge (eine Zeichenfolge Wert mit einer Länge von Null, in SQL als '' dargestellt. Null ist definiert durch den ISO SQL-Standard als unterscheidet sich von einer leeren Zeichenfolge und der numerische Wert 0 jedoch. Während Null das Fehlen von anzeigt ein beliebiger Wert, die leere Zeichenfolge und Numerische Null repräsentieren beide tatsächlich Werte.
Auch von SET ANSI_NULLS
Wenn SET ANSI_NULLS auf OFF gesetzt ist, entspricht Equals (=) und nicht gleich (& lt; & gt;) Vergleich Operatoren folgen nicht dem SQL-92 Standard. Eine SELECT-Anweisung mit WHERE column_name = NULL gibt den Wert zurück Zeilen mit Nullwerten in column_name. Eine SELECT-Anweisung, die WHERE verwendet Spaltenname & lt; & gt; NULL gibt die Zeilen zurück mit Nonnull-Werten in der Spalte. Im Außerdem eine SELECT-Anweisung mit WHERE Spaltenname & lt; & gt; XYZ_value kehrt zurück alle Zeilen, die nicht XYZ-Wert und das sind nicht NULL.
NULL bedeutet keine Daten (nicht einmal leere oder leere Sachen), also funktioniert Column = NULL
nicht, obwohl Column IS NULL
Zeilen mit dieser Spalte als NULL zurückgeben sollte. Aber Sie fügen '' value ein, so dass der Vergleich mit NULL keine Zeilen zurückgibt.
Wie bereits erwähnt, gibt die erste Abfrage keine Ausgabe zurück, da Sie mit dem Operator gleich nach NULL suchen können. Die zweite Abfrage ist verwirrender - meine einzige Vermutung ist, dass Sie Oracle verwenden, das leere Zeichenfolgen als NULL behandelt.
Die Antwort auf die Frage nach Werten in den Feldern Sex und DOB hängt vom Typ der Felder und der Datenbank-Engine ab, mit der Sie arbeiten.