Rumah > pangkalan data > tutorial mysql > Mengapa `NULL != NULL` Tidak Sentiasa Kembali Benar dalam SQL?

Mengapa `NULL != NULL` Tidak Sentiasa Kembali Benar dalam SQL?

Barbara Streisand
Lepaskan: 2025-01-03 08:49:39
asal
710 orang telah melayarinya

Why Doesn't `NULL != NULL` Always Return True in SQL?

Mengapa Ketaksamaan dengan NULL Tidak Sentiasa Kembali Benar

Apabila membandingkan nilai NULL dengan pengendali ketaksamaan ("!="), ia adalah sering mengandaikan bahawa hasilnya harus benar, kerana NULL tidak sama dengan dirinya sendiri. Walau bagaimanapun, dalam konteks tertentu seperti SQL, andaian ini tidak sah.

SQL's Ternary Logic

Dalam SQL, NULL mewakili nilai yang tidak diketahui. Ini memperkenalkan keadaan logik ketiga di luar benar dan palsu, yang dikenali sebagai "tidak diketahui." Akibatnya, perbandingan ketidaksamaan dengan NULL mengikut logik ternary, di mana hasilnya boleh menjadi salah satu daripada tiga pilihan:

  • Benar
  • Salah
  • Tidak diketahui

Contoh:

Pertimbangkan pernyataan berikut:

WHERE (A <> B)
Salin selepas log masuk

Jika A dan B adalah kedua-duanya NULL, ungkapan di atas mengembalikan "tidak diketahui" kerana tiada cara untuk menentukan sama ada ia benar-benar tidak sama atau sama ada kedua-duanya tidak diketahui.

Implikasi untuk Pemeriksaan Ketaksamaan

Ini logik ternary menentukan bahawa semakan ketidaksamaan mudah dengan NULL mungkin tidak selalu kembali benar. Untuk memastikan hasil yang tepat, semak secara eksplisit keadaan NULL menggunakan "IS NULL" dan "IS NOT NULL" adalah perlu.

Sebagai contoh, ungkapan berikut mengendalikan perbandingan ketaksamaan dengan NULL dengan betul:

WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
Salin selepas log masuk

Dengan memasukkan semakan eksplisit ini, pangkalan data boleh menentukan hasil logik yang betul (benar, salah atau tidak diketahui) untuk semua kemungkinan kes melibatkan nilai NULL.

Atas ialah kandungan terperinci Mengapa `NULL != NULL` Tidak Sentiasa Kembali Benar dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan