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
111 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:

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn != NULL; -- Returns 0 rows
SELECT * FROM MyTable WHERE MyColumn  NULL; -- Also returns 0 rows</code>
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:

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn IS NOT NULL; -- Returns the expected rows</code>
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:

<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn != 'ValueX'; -- Returns rows where MyColumn is not 'ValueX'</code>
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!

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