Heim >Datenbank >MySQL-Tutorial >Wie vergleiche ich NULL-Werte in SQL-Abfragen richtig?
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!