Warum gibt Spalte = NULL keine Zeilen zurück? [Duplikat]

8

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 ??

    
Ankit 07.10.2010, 05:33
quelle

5 Antworten

10

NULL ist ein spezieller Wert in SQL, der die Abwesenheit von Daten angibt. Daher können keine Abfragen wie:

ausführen %Vor%

NULL kann nicht mit irgendetwas verglichen werden, einschließlich NULL selbst. Stattdessen benötigen Sie:

%Vor%

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:

%Vor%     
NullUserException 07.10.2010 05:39
quelle
2

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.

    
Adriaan Stander 07.10.2010 05:38
quelle
2

'' - es ist meine leere Zeichenfolge. Wenn Sie NULL einfügen möchten, müssen Sie

verwenden %Vor%     
Dezigo 07.10.2010 05:46
quelle
0

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.

    
Daud Ahmad Khokhar 07.10.2010 05:44
quelle
0

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.

    
Stanislav Kniazev 07.10.2010 06:02
quelle

Tags und Links