Menapis baris berdasarkan kehadiran atau ketiadaan nilai NULL adalah tugas biasa dalam SQL. Memahami nuansa ujian untuk nilai NULL menggunakan IS NULL
dan = NULL
adalah penting untuk menulis pertanyaan yang tepat.
IS NULL
ialah pengendali SQL yang direka khusus untuk menguji sama ada medan mengandungi nilai NULL. Tidak seperti pengendali nilai seperti =
, hasil IS NULL
adalah BENAR apabila medan adalah NULL dan FALSE sebaliknya.
Tidak seperti IS NULL
, field = NULL
ialah perbandingan kesamaan yang cuba membandingkan nilai medan kepada literal NULL. Dalam SQL, nilai NULL dibandingkan dengan nilai lain (walaupun NULL lain) dengan NULL itu sendiri. Menurut logik SQL, nilai NULL sememangnya tidak diketahui, jadi perbandingan kesamaan langsung tidak boleh dipercayai.
Dalam klausa WHERE
, syarat yang mengandungi field = NULL
akan sentiasa dinilai kepada NULL, yang dianggap SALAH dalam SQL. Oleh itu, field = NULL
tidak boleh menapis baris yang mengandungi nilai NULL dengan betul. Untuk tujuan ini, field IS NULL
hendaklah digunakan.
Pertimbangkan pernyataan SQL berikut:
<code class="language-sql">SELECT * FROM table WHERE column = NULL;</code>
Pernyataan ini tidak akan mengembalikan sebarang baris walaupun medan column
mengandungi nilai NULL. Untuk menapis nilai NULL dengan betul, pernyataan yang betul ialah:
<code class="language-sql">SELECT * FROM table WHERE column IS NULL;</code>
Walaupun IS NULL
dan = NULL
kelihatan serupa, adalah penting untuk diingat bahawa IS NULL
ialah cara pilihan dan betul untuk menguji nilai NULL dalam pertanyaan SQL. Disebabkan oleh pengendalian unik SQL bagi nilai NULL, menggunakan = NULL
boleh membawa kepada hasil yang mengelirukan. Dengan mengikut metodologi pertanyaan yang betul, pembangun boleh memastikan ketepatan dan kecekapan kod SQL mereka.
Atas ialah kandungan terperinci IS NULL vs. = NULL dalam SQL: Apakah Cara Yang Betul untuk Menguji Nilai Null?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!