MySQL: NULL-Wert-Vergleiche verstehen
Übersicht:
Für die effektive Arbeit mit MySQL ist ein klares Verständnis des Verhaltens von NULL-Werten bei Vergleichsoperationen erforderlich. Dieser Artikel konzentriert sich auf das Verhalten von NULL-Werten bei Verwendung des !=
(ungleich)-Operators.
Das Problem:
Angenommen, eine Tabelle enthält eine CODE
-Spalte, die NULL-Werte zulässt. Warum werden in der folgenden Abfrage Zeilen weggelassen, in denen CODE
NULL ist, obwohl !=
verwendet wird?
<code class="language-sql">SELECT * FROM TABLE WHERE CODE!='C'</code>
Die Lösung:
Der !=
-Operator von MySQL erzeugt beim Vergleich eines Nicht-NULL-Werts mit NULL kein Wahr/Falsch-Ergebnis. Der Vergleich gilt als unbestimmt.
Um NULL-Werte korrekt zu verarbeiten, verwenden Sie IS NULL
oder IS NOT NULL
. Die folgende Abfrage schließt genau Zeilen aus, bei denen CODE
gleich „C“ oder NULL ist:
<code class="language-sql">SELECT * FROM TABLE WHERE CODE IS NULL OR CODE!='C'</code>
Dieser Ansatz stellt sicher, dass beide Bedingungen unabhängig voneinander ausgewertet werden und nur Zeilen ausgeschlossen werden, die eine der beiden Bedingungen erfüllen.
Weitere Klarstellung:
Obwohl CODE != ''
manchmal in der MySQL-Dokumentation oder in Foren vorkommt, ist es kein Ersatz für CODE IS NOT NULL
. Der !=
-Operator vergleicht Werte; IS NULL
prüft, ob ein Wert fehlt.
Daher sind diese Abfragen nicht gleichwertig:
<code class="language-sql">SELECT * FROM TABLE WHERE CODE != '' SELECT * FROM TABLE WHERE CODE IS NOT NULL</code>
Die Verwendung von IS NULL
und IS NOT NULL
gewährleistet die ordnungsgemäße Verarbeitung und Prüfung von NULL-Werten in MySQL-Abfragen.
Das obige ist der detaillierte Inhalt vonWarum schließt der MySQL-Operator „!=' Zeilen mit NULL-Werten aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!