Heim >Datenbank >MySQL-Tutorial >Wie wirken sich NULL-Werte auf die Ergebnisse von NOT IN-Klauseln in SQL aus?
NULL-Werte in der NOT IN-Klausel von SQL verstehen
Das Verhalten von NOT IN
-Klauseln in SQL wird erheblich durch das Vorhandensein von NULL
-Werten beeinflusst. Dieser subtile Unterschied kann zu unerwarteten Ergebnissen führen, wenn er nicht sorgfältig berücksichtigt wird. Die folgenden Beispiele veranschaulichen dieses Verhalten.
Beispielabfrage 1:
<code class="language-sql">select 'true' where 3 in (1, 2, 3, null)</code>
Diese Abfrage ergibt Folgendes:
<code>3 = 1 OR 3 = 2 OR 3 = 3 OR 3 = NULL</code>
Da 3 = 3
wahr ist, gibt die Abfrage ein Ergebnis zurück.
Beispielabfrage 2:
<code class="language-sql">select 'true' where 3 not in (1, 2, null)</code>
Dies entspricht:
<code class="language-sql">3 <> 1 AND 3 <> 2 AND 3 <> NULL</code>
Wenn ANSI_NULLS
aktiviert ist (die Standardeinstellung in den meisten SQL-Datenbanken), wird 3 <> NULL
zu UNKNOWN
ausgewertet. Eine AND
-Bedingung mit UNKNOWN
führt zu UNKNOWN
und UNKNOWN
wird in einer WHERE
-Klausel als falsch behandelt. Folglich gibt diese Abfrage keine Zeilen zurück.
Das Deaktivieren von ANSI_NULLS
ändert dieses Verhalten. Ohne ANSI_NULLS
könnte 3 <> NULL
als wahr ausgewertet werden, was dazu führt, dass die Abfrage ein Ergebnis zurückgibt. Dies verdeutlicht die durch NULL
Werte.
Fazit:
Berücksichtigen Sie bei der Verwendung von NOT IN
immer potenzielle NULL
-Werte in der Liste. Das Vorhandensein von NULL
wirkt sich aufgrund der dreiwertigen Logik von SQL (WAHR, FALSCH, UNBEKANNT) erheblich auf das Ergebnis der Abfrage aus. Es wird empfohlen, NOT IN
mit NULL
-Werten zu vermeiden und alternative Ansätze wie NOT EXISTS
zu verwenden, um vorhersehbarere und zuverlässigere Ergebnisse zu erzielen.
Das obige ist der detaillierte Inhalt vonWie wirken sich NULL-Werte auf die Ergebnisse von NOT IN-Klauseln in SQL aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!