Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membandingkan Nilai NULL dengan betul dalam Pertanyaan SQL?

Bagaimana untuk Membandingkan Nilai NULL dengan betul dalam Pertanyaan SQL?

DDD
DDDasal
2025-01-21 13:12:10268semak imbas

How to Correctly Compare NULL Values in SQL Queries?

Pemahaman mendalam tentang perbandingan nilai SQL NULL

Dalam SQL, nilai NULL mewakili nilai yang tidak diketahui atau kosong. Apabila membandingkan NULL dengan nilai lain menggunakan operator perbandingan biasa (cth. =, !=), hasilnya sentiasa NULL. Ini boleh menyebabkan tingkah laku yang tidak dijangka dalam hasil pertanyaan.

Perbezaan antara "di mana x adalah batal" dan "di mana x = batal"

Sintaks "di mana x adalah nol" secara eksplisit menyemak sama ada lajur x adalah NULL, manakala "di mana x = null" cuba membandingkan nilai lajur kepada literal NULL. Perbandingan terakhir gagal kerana ia menghasilkan NULL, yang sentiasa palsu dalam klausa WHERE.

Penjelasan tentang tingkah laku nilai NULL

SQL mentafsirkan NULL sebagai "tidak diketahui", yang bermaksud bahawa sebarang perbandingan dengan NULL akan menghasilkan keadaan yang tidak diketahui. Oleh itu, pengendali perbandingan biasa tidak dapat menguji nilai NULL dengan berkesan.

IS NULL dan BUKAN NULL sintaks

Untuk menyelesaikan masalah ini, SQL menyediakan sintaks "IS NULL" dan "IS NOT NULL". Syarat khas ini secara eksplisit menyemak kehadiran nilai NULL dalam lajur. "IS NULL" mengembalikan benar jika lajur adalah NULL, manakala "IS NOT NULL" mengembalikan true jika lajur bukan NULL.

Contoh

Pertanyaan SQL berikut menggambarkan perbezaan antara pengendali perbandingan biasa dan sintaks IS NULL:

<code class="language-sql">CREATE TABLE example (value INT);
INSERT INTO example VALUES (1), (NULL);

SELECT * FROM example WHERE value = NULL; -- 返回空结果
SELECT * FROM example WHERE value IS NULL; -- 返回包含NULL值的行</code>

Pertanyaan ini menunjukkan bahawa perbandingan biasa tidak mengembalikan baris yang mengandungi nilai NULL, manakala sintaks IS NULL mengenal pastinya dengan betul.

Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Nilai NULL dengan betul dalam Pertanyaan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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