sql >> Databáze >  >> RDS >> Mysql

Proč je v mysql null<>null=null

Protože jakýkoli operátor porovnání nad NULL objevující se ve filtru sql by měl (a dělá) způsobit, že řádek nebude vybrán.

Měli byste použít null safe operátor <=> pro srovnání se sloupcem obsahujícím NULL hodnoty a další NOT NULL hodnota, ale <=> vrátí 1 když jsou oba operandy NULL protože NULL se nikdy nepovažuje za rovné NULL .

Toto je příklad situace, kdy je užitečný operátor null safe:

Máte stůl:

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

A chcete vybrat všechna telefonní čísla, která nepocházejí ze Španělska (kód země 34). První pokus je obvykle:

SELECT Number FROM Phones WHERE CountryCode <> 34;

Všimli jste si však, že některé telefony bez kódu země (hodnota NULL) nejsou uvedeny a chcete je zahrnout do výsledku, protože nepocházejí ze Španělska:

SELECT Number FROM Phones WHERE CountryCode <=> 34;


  1. python - Problém s ukládáním znaku Unicode do MySQL pomocí Django

  2. Jak získám protokolování psycopg2 doby provádění dotazu?

  3. LINQ to MySQL – jaká je nejlepší možnost?

  4. Jak načíst velké množství řetězců, aby odpovídaly databázi Oracle?