" Operator Gagal Membandingkan dengan NULL dalam SQL? " />
Memahami Perbandingan NULL dalam SQL
SQL menggunakan "!=" dan "<>" untuk pemeriksaan ketidaksamaan. Walau bagaimanapun, pengendali ini berkelakuan di luar jangkaan dengan nilai NULL
.
Isunya:
Pertimbangkan pertanyaan SQL ini:
<code class="language-sql">SELECT * FROM MyTable WHERE MyColumn != NULL; SELECT * FROM MyTable WHERE MyColumn <> NULL; SELECT * FROM MyTable WHERE MyColumn IS NOT NULL;</code>
Dua pertanyaan pertama mengembalikan set hasil kosong, manakala pertanyaan ketiga mengembalikan 568 baris dengan betul. Mengapakah percanggahan ini?
Penjelasan:
"!=" dan "<>" bandingkan nilai. NULL
, bagaimanapun, bukan nilai; ia menandakan ketiadaan nilai. Oleh itu, pengendali ini tidak sesuai untuk NULL
perbandingan.
Gunakan IS NULL
atau IS NOT NULL
sebaliknya. Predikat ini secara khusus menyemak kehadiran atau ketiadaan nilai. Kejayaan pertanyaan ketiga berpunca daripada penggunaan IS NOT NULL
yang betul.
Isi Penting:
NULL
, gunakan IS NOT NULL
.NULL
tertentu.NULL
tidak boleh dianggap sama atau tidak sama dengan mana-mana nilai, kerana ia mewakili data yang tiada.Atas ialah kandungan terperinci Mengapa Operator '!=' dan '<>' Gagal Membandingkan dengan NULL dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!