Rumah >pangkalan data >tutorial mysql >Bagaimana Mengendalikan Nilai NULL dengan Kata Kunci IN dalam Pertanyaan MySQL?
MySQL IN Keyword Tidak Termasuk Nilai NULL
Apabila menggunakan kata kunci IN dalam pertanyaan MySQL untuk menapis baris berdasarkan nilai tertentu, hasil yang tidak dijangka mungkin berlaku apabila bekerja dengan nilai NULL. Artikel ini menyiasat sebab di sebalik tingkah laku ini dan menyediakan kaedah untuk mengendalikan nilai NULL dengan betul dalam senario sedemikian.
Pertanyaan yang anda nyatakan:
select count(*) from Table1 where CurrentDateTime>'2012-05-28 15:34:02.403504' and Error not in ('Timeout','Connection Error');
mengejutkan mengecualikan baris di mana lajur Ralat mengandungi nilai NULL . Ini kerana kata kunci IN adalah semantik bersamaan dengan:
Error <> 'TimeOut' AND Error <> 'Connection Error'
Disebabkan sifat nilai NULL, ungkapan di atas tidak boleh menilai kepada benar. Nilai NULL tidak sama dengan mana-mana nilai lain, termasuk nilai mereka sendiri. Oleh itu, baris dengan nilai NULL dalam lajur Ralat ditapis keluar.
Untuk memasukkan nilai NULL dalam set hasil, anda boleh melaraskan pertanyaan seperti berikut:
Contoh:
create table tbl (msg varchar(100) null, description varchar(100) not null); insert into tbl values ('hi', 'greet'), (null, 'nothing'); select 'hulk' as x, msg, description from tbl where msg not in ('bruce','banner');
Pertanyaan ini hanya akan mengembalikan baris dengan msg ialah 'hi', kerana nilai NULL dikecualikan kerana ketidaktentuannya.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Nilai NULL dengan Kata Kunci IN dalam Pertanyaan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!