Rumah >pangkalan data >tutorial mysql >Mengapa Operator `!=` MySQL Mengecualikan Baris dengan Nilai NULL?

Mengapa Operator `!=` MySQL Mengecualikan Baris dengan Nilai NULL?

Susan Sarandon
Susan Sarandonasal
2025-01-09 19:31:42950semak imbas

Why Does MySQL's `!=` Operator Exclude Rows with NULL Values?

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!

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