MySQL-Vergleich mit NULL-Werten
Es ist wichtig zu verstehen, wie MySQL diese Vergleiche handhabt, wenn es um Spalten geht, die NULL-Werte zulassen, wie etwa die CODE-Spalte im Beispiel. Warum schließt die folgende Abfrage Zeilen aus, in denen CODE NULL ist?
<code class="language-sql">SELECT * from TABLE where CODE!='C'</code>
Dies liegt daran, dass der Operator !=
(ungleich) nicht explizit auf NULL-Werte prüft. Es wird nur geprüft, ob der Wert ungleich „C“ ist. Da NULL ein spezieller Wert ist, der auf einen fehlenden Wert hinweist, ist er weder gleich noch ungleich einem bestimmten Wert.
Um NULL-Werte einzuschließen, müssen Sie den Operator IS NULL
oder IS NOT NULL
verwenden. Diese Operatoren prüfen explizit, ob NULL-Werte vorhanden sind. Die richtige Abfrage sollte sein:
<code class="language-sql">SELECT * from TABLE where CODE IS NULL OR CODE!='C'</code>
Durch die Verwendung von IS NULL
oder IS NOT NULL
stellt die Abfrage sicher, dass sie Zeilen enthält, in denen CODE NULL ist, sowie Zeilen, in denen CODE nicht gleich „C“ ist. Dies liegt daran, dass der OR
-Operator beide Bedingungen als gültige Kriterien für übereinstimmende Zeilen behandelt.
Zusammenfassend lässt sich sagen, dass Sie beim Vergleichen von Spalten, die möglicherweise NULL-Werte enthalten, immer den Operator IS NULL
oder IS NOT NULL
verwenden, um explizit auf das Vorhandensein von NULL-Werten zu testen. Andernfalls können die Vergleichsergebnisse nicht den Erwartungen entsprechen.
Das obige ist der detaillierte Inhalt vonWarum schließt MySQL NULL-Werte aus, wenn der Operator != in einer WHERE-Klausel verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!