Heim >Datenbank >MySQL-Tutorial >Wie vergleiche ich NULL-Werte in SQL-Abfragen richtig?

Wie vergleiche ich NULL-Werte in SQL-Abfragen richtig?

DDD
DDDOriginal
2025-01-21 13:12:10264Durchsuche

How to Correctly Compare NULL Values in SQL Queries?

Detailliertes Verständnis des SQL-NULL-Wert-Vergleichs

In SQL stellt der NULL-Wert einen unbekannten oder leeren Wert dar. Beim Vergleich von NULL mit anderen Werten mithilfe regulärer Vergleichsoperatoren (z. B. =, !=) ist das Ergebnis immer NULL. Dies kann zu unerwartetem Verhalten in den Abfrageergebnissen führen.

Der Unterschied zwischen „wobei x null ist“ und „wobei x = null“

Die Syntax „wo x null ist“ prüft explizit, ob Spalte x NULL ist, während „wo x = null“ versucht, den Spaltenwert mit einem NULL-Literal zu vergleichen. Der letztgenannte Vergleich schlägt fehl, da er NULL ergibt, was in der WHERE-Klausel immer falsch ist.

Erklärung des NULL-Wert-Verhaltens

SQL interpretiert NULL als „unbekannt“, was bedeutet, dass jeder Vergleich mit NULL zu einem unbekannten Zustand führt. Daher können reguläre Vergleichsoperatoren NULL-Werte nicht effektiv testen.

IS NULL- und IS NOT NULL-Syntax

Um dieses Problem zu lösen, bietet SQL die Syntax „IS NULL“ und „IS NOT NULL“. Diese Sonderbedingungen prüfen explizit, ob in der Spalte NULL-Werte vorhanden sind. „IS NULL“ gibt „true“ zurück, wenn die Spalte NULL ist, während „IS NOT NULL“ true zurückgibt, wenn die Spalte nicht NULL ist.

Beispiel

Die folgende SQL-Abfrage veranschaulicht den Unterschied zwischen regulären Vergleichsoperatoren und der IS NULL-Syntax:

<code class="language-sql">CREATE TABLE example (value INT);
INSERT INTO example VALUES (1), (NULL);

SELECT * FROM example WHERE value = NULL; -- 返回空结果
SELECT * FROM example WHERE value IS NULL; -- 返回包含NULL值的行</code>

Diese Abfrage zeigt, dass ein regulärer Vergleich keine Zeilen mit NULL-Werten zurückgibt, obwohl die IS NULL-Syntax sie korrekt identifiziert.

Das obige ist der detaillierte Inhalt vonWie vergleiche ich NULL-Werte in SQL-Abfragen richtig?. 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