Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego null<>null=null w mysql

Ponieważ każdy operator porównania nad NULL pojawienie się w filtrze sql powinno (i robi) sprawić, że wiersz nie zostanie zaznaczony.

Powinieneś użyć bezpiecznego operatora o wartości null <=> do porównania z kolumną zawierającą NULL wartości i inne NOT NULL wartość ale <=> zwróci 1 gdy oba operandy są NULL ponieważ NULL nigdy nie jest uważany za równy NULL .

To jest przykład sytuacji, w której operator null safe jest przydatny:

Masz stolik:

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

I chcesz wybrać wszystkie numery telefonów, które nie pochodzą z Hiszpanii (kod kraju 34). Pierwsza próba to zwykle:

SELECT Number FROM Phones WHERE CountryCode <> 34;

Zauważasz jednak, że na liście nie ma telefonów bez kodu kraju (wartość NULL) i chcesz je uwzględnić w wyniku, ponieważ nie pochodzą one z Hiszpanii:

SELECT Number FROM Phones WHERE CountryCode <=> 34;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy naprawdę muszę zrobić mysql_close()

  2. Ogranicz wartość typu danych MySQL do określonego zakresu (najlepiej nie ENUM)

  3. Zaktualizuj wartość kolumny, zastępując część ciągu

  4. Transakcje bazodanowe w Zend Framework:czy są izolowane?

  5. SQL Zastąp wiele zmiennych z innej tabeli w wyniku zapytania