Mysql
 sql >> Database >  >> RDS >> Mysql

Perché è null<>null=null in mysql

Perché qualsiasi operatore di confronto su NULL apparire in un filtro sql dovrebbe (e lo fa) rendere la riga non selezionata.

Dovresti usare l'operatore null safe <=> da confrontare con la colonna contenente NULL valori e altro NOT NULL valore ma <=> restituirà 1 quando entrambi gli operandi sono NULL perché NULL non è mai considerato uguale a NULL .

Questo è un esempio di una situazione in cui l'operatore null safe è utile:

Hai un tavolo:

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

E vuoi selezionare tutti i numeri di telefono che non provengono dalla Spagna (prefisso internazionale 34). Il primo tentativo è solitamente:

SELECT Number FROM Phones WHERE CountryCode <> 34;

Ma noti che ci sono telefoni senza prefisso internazionale (valore NULL) non elencati e vuoi includerli nel tuo risultato perché non provengono dalla Spagna:

SELECT Number FROM Phones WHERE CountryCode <=> 34;