Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum ist null<>null=null in mysql

Denn jeder Vergleichsoperator über NULL Das Erscheinen in einem SQL-Filter sollte (und tut) dazu führen, dass die Zeile nicht ausgewählt wird.

Sie sollten den sicheren Nulloperator <=> verwenden zum Vergleich mit einer Spalte, die NULL enthält Werte und andere NOT NULL Wert, sondern <=> gibt 1 zurück wenn beide Operanden NULL sind weil NULL wird nie gleich NULL betrachtet .

Dies ist ein Beispiel für eine Situation, in der der Null-Safe-Operator nützlich ist:

Sie haben eine Tabelle:

Phones
----
Number
CountryCode (can be NULL) 

Und Sie möchten alle Telefonnummern auswählen, die nicht aus Spanien stammen (Ländercode 34). Der erste Versuch ist normalerweise:

SELECT Number FROM Phones WHERE CountryCode <> 34;

Aber Sie stellen fest, dass Telefone ohne Landesvorwahl (NULL-Wert) nicht aufgeführt sind, und Sie möchten diese in Ihr Ergebnis einbeziehen, da sie nicht aus Spanien stammen:

SELECT Number FROM Phones WHERE CountryCode <=> 34;