Heim >Datenbank >MySQL-Tutorial >Wie wirken sich NULL-Werte auf die Ergebnisse von NOT IN-Klauseln in SQL aus?

Wie wirken sich NULL-Werte auf die Ergebnisse von NOT IN-Klauseln in SQL aus?

Susan Sarandon
Susan SarandonOriginal
2025-01-23 12:42:12517Durchsuche

How Do NULL Values Affect the Results of NOT IN Clauses in SQL?

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 NULLWerte.

verursachte Inkonsistenz

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn