Rumah >pangkalan data >tutorial mysql >Mengapa Operator `!=` MySQL Mengecualikan Baris dengan Nilai NULL?
MySQL: Memahami Perbandingan Nilai NULL
Ikhtisar:
Bekerja dengan berkesan dengan MySQL memerlukan pemahaman yang jelas tentang cara nilai NULL berkelakuan dalam operasi perbandingan. Artikel ini memfokuskan pada gelagat nilai NULL apabila menggunakan operator !=
(tidak sama).
Masalahnya:
Katakan jadual termasuk lajur CODE
yang membenarkan nilai NULL. Mengapakah pertanyaan di bawah meninggalkan baris yang CODE
ialah NULL, walaupun !=
digunakan?
<code class="language-sql">SELECT * FROM TABLE WHERE CODE!='C'</code>
Penyelesaian:
Pengendali !=
MySQL tidak menghasilkan hasil benar/salah apabila membandingkan nilai bukan NULL kepada NULL. Perbandingan dianggap tidak tentu.
Untuk mengendalikan NULL dengan betul, gunakan IS NULL
atau IS NOT NULL
. Pertanyaan berikut dengan tepat mengecualikan baris dengan CODE
sama dengan 'C' atau NULL:
<code class="language-sql">SELECT * FROM TABLE WHERE CODE IS NULL OR CODE!='C'</code>
Pendekatan ini memastikan kedua-dua keadaan dinilai secara bebas, tidak termasuk hanya baris yang memenuhi mana-mana syarat.
Penjelasan Lanjut:
Walaupun kadangkala dilihat dalam dokumentasi atau forum MySQL, CODE != ''
bukan pengganti CODE IS NOT NULL
. Operator !=
membandingkan nilai; IS NULL
menyemak ketiadaan nilai.
Oleh itu, pertanyaan ini bukan setara:
<code class="language-sql">SELECT * FROM TABLE WHERE CODE != '' SELECT * FROM TABLE WHERE CODE IS NOT NULL</code>
Menggunakan IS NULL
dan IS NOT NULL
memastikan pengendalian dan ujian nilai NULL yang betul dalam pertanyaan MySQL.
Atas ialah kandungan terperinci Mengapa Operator `!=` MySQL Mengecualikan Baris dengan Nilai NULL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!