Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Misteri MySQL:Nilai null tidak berbeda dengan string non-null

Tepat. NULL mewakili nilai yang tidak diketahui, bukan nilai spesifik apa pun (tidak sama dengan NULL dalam C, atau nil di Ruby, dll.) Dalam SQL, jika Anda membandingkan sesuatu dengan nilai yang tidak diketahui, hasilnya juga tidak diketahui. Dan Anda tidak akan mendapatkan baris di mana WHERE kondisi tidak diketahui.

Coba ini:

SELECT NULL <> 2;

dan Anda akan melihat NULL sebagai hasilnya.

Coba ini:

SELECT * FROM t WHERE NULL;

dan tidak ada baris yang akan keluar, meskipun tabel t sangat besar.

Jika Anda benar-benar membutuhkan apa yang Anda inginkan (dan saya tidak menganjurkan ini), Anda dapat melakukan sesuatu seperti ini:

SELECT T.f1, T.f2
FROM (SELECT NULL f1, 'a' f2) T
WHERE ((T.f1 IS NULL OR T.f2 IS NULL)
    AND (T.f1 IS NOT NULL OR T.f2 IS NOT NULL))
    OR T.f1 <> T.f2


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menggunakan Tampilan di Database MySQL

  2. Enkripsi AES di mysql dan php

  3. Desain Basis Data:ke EAV atau tidak ke EAV?

  4. Fungsi MySQL SIGN() – Cari Tahu Apakah Angka Positif atau Negatif di MySQL

  5. Bagaimana cara terbaik mendesain REST API dengan banyak filter?