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
Freigeben: 2025-01-23 12:42:12
Original
534 Leute haben es durchsucht

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:

select 'true' where 3 in (1, 2, 3, null)
Nach dem Login kopieren

Diese Abfrage ergibt Folgendes:

<code>3 = 1 OR 3 = 2 OR 3 = 3 OR 3 = NULL</code>
Nach dem Login kopieren

Da 3 = 3 wahr ist, gibt die Abfrage ein Ergebnis zurück.

Beispielabfrage 2:

select 'true' where 3 not in (1, 2, null)
Nach dem Login kopieren

Dies entspricht:

3 <> 1 AND 3 <> 2 AND 3 <> NULL
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage