Heim >Datenbank >MySQL-Tutorial >Warum schließt „CODE!='C'' NULL-Werte in MySQL-Abfragen aus?
Vergleich von NULL-Werten in MySQL
In MySQL kann der Vergleich von Spalten mit NULL-Werten eine Herausforderung darstellen, da sich das Verhalten von Standard-Gleichheitsvergleichen unterscheidet. In diesem Artikel wird untersucht, warum eine Abfrage wie „SELECT * from TABLE where CODE!=‘C‘“ Zeilen mit CODE=NULL ausschließt, auch wenn „C“ nicht NULL ist.
NULL-Vergleichsverhalten
Beim Vergleich einer Spalte mit einem Nicht-NULL-Wert (z. B. „CODE!=‘C‘“) gibt die Abfrage Zeilen zurück, in denen CODE mit „C“ übereinstimmt, und schließt alle anderen Werte, einschließlich NULL, aus. Dieses Verhalten ist darauf zurückzuführen, dass SQL NULL als eindeutigen Wert behandelt, der nicht an Standardvergleichen teilnimmt.
Um NULL-Werte in einen Vergleich einzubeziehen, müssen diese explizit mit dem Operator IS NULL oder IS NOT NULL überprüft werden. Die folgende Abfrage gibt beispielsweise alle Zeilen zurück, in denen CODE NULL oder ungleich „C“ ist:
<code class="language-sql">SELECT * from TABLE where CODE IS NULL OR CODE!='C'</code>
Erklärung des CODE!='C'-Verhaltens
Der Grund dafür, dass „CODE!='C'“ keine Zeilen mit CODE=NULL zurückgibt, liegt darin, dass die Abfrage bei jedem Vergleich mit NULL als falsch ausgewertet wird. Auch wenn „C“ nicht NULL ist, führt ein Vergleich mit einem NULL-Wert immer zu „false“.
Alternative Vergleichsoperatoren
MySQL bietet einen alternativen Vergleichsoperator „<=" (kleiner oder gleich), der zum Vergleichen von Werten verwendet werden kann, die NULL enthalten. Die Auswertung von „x <= y“ gibt „true“ zurück, wenn x kleiner, gleich oder NULL ist, andernfalls „false“.
Sie können alle Zeilen zurückgeben, in denen CODE NULL oder ungleich 'C' ist, indem Sie „CODE <= 'C' OR CODE IS NULL“ anstelle von „CODE!='C'“ verwenden.
Das obige ist der detaillierte Inhalt vonWarum schließt „CODE!='C'' NULL-Werte in MySQL-Abfragen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!