Rumah > pangkalan data > tutorial mysql > Mengapa Adakah != Gagal Apabila Membandingkan dengan NULL dalam SQL?

Mengapa Adakah != Gagal Apabila Membandingkan dengan NULL dalam SQL?

Linda Hamilton
Lepaskan: 2025-01-21 14:51:08
asal
215 orang telah melayarinya

Why Does != Fail When Comparing to NULL in SQL?

SQL's != Operator dan NULL Conundrum

Pengendali

SQL != (tidak sama) memberikan cabaran unik apabila berurusan dengan nilai NULL. Walaupun ia membandingkan nilai bukan NULL secara berkesan, kelakuannya dengan NULL adalah berlawanan dengan intuitif.

Masalah dengan != NULL

Pertimbangkan ini:

SELECT * FROM MyTable WHERE MyColumn != NULL; -- Returns 0 rows
SELECT * FROM MyTable WHERE MyColumn  NULL; -- Also returns 0 rows
Salin selepas log masuk

Pertanyaan ini, bertujuan untuk mencari baris dengan MyColumn bukan NULL, secara mengejutkan mengembalikan set hasil kosong. Ini bukan pepijat; ia disebabkan oleh sifat NULL. NULL tidak mewakili nilai; ia mewakili ketiadaan sesuatu nilai. Oleh itu, membandingkan nilai dengan NULL menggunakan != atau = sentiasa menghasilkan UNKNOWN, bukan TRUE atau FALSE.

Penyelesaian: IS NOT NULL

Untuk mengenal pasti nilai bukan NULL dengan tepat, gunakan predikat IS NOT NULL:

SELECT * FROM MyTable WHERE MyColumn IS NOT NULL; -- Returns the expected rows
Salin selepas log masuk

IS NOT NULL (dan rakan sejawatannya, IS NULL) direka khusus untuk mengendalikan nilai NULL dalam perbandingan SQL.

Membandingkan dengan Nilai Bukan NULL

Pengendali != berfungsi seperti yang diharapkan apabila membandingkan dengan nilai bukan NULL:

SELECT * FROM MyTable WHERE MyColumn != 'ValueX'; -- Returns rows where MyColumn is not 'ValueX'
Salin selepas log masuk

Pengambilan Utama

Pertanyaan SQL tepat yang melibatkan nilai NULL memerlukan penggunaan IS NOT NULL dan IS NULL. Elakkan menggunakan != atau = untuk NULL perbandingan untuk mengelakkan hasil yang tidak dijangka. Gunakan predikat khusus ini untuk pengendalian NULL yang boleh dipercayai dalam pernyataan SQL anda.

Atas ialah kandungan terperinci Mengapa Adakah != Gagal Apabila Membandingkan dengan NULL dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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