Rumah  >  Artikel  >  pangkalan data  >  Bagaimana Mengendalikan Nilai NULL dengan Kata Kunci IN dalam Pertanyaan MySQL?

Bagaimana Mengendalikan Nilai NULL dengan Kata Kunci IN dalam Pertanyaan MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-10-24 05:45:02686semak imbas

How to Handle NULL Values with IN Keyword in MySQL Queries?

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:

  • COALESCE (Ralat,'') bukan dalam ('Tamat masa','Ralat Sambungan'): Ini menggantikan nilai NULL dalam lajur Ralat dengan rentetan kosong sebelum membandingkannya.
  • Ralat IS NULL ATAU Ralat tiada dalam ('Tamat Masa','Ralat Sambungan'): Ini secara eksplisit menyemak kedua-dua nilai NULL dan nilai tidak sepadan.
  • KES BILA Ralat NULL MAKA 1 LAIN Ralat bukan dalam ('Timeout','Connection Error') THEN 1 END = 1: Ini menggunakan pernyataan CASE untuk menukar kedua-dua nilai NULL dan padanan kepada 1, yang kemudiannya disemak untuk kesamaan kepada 1.

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!

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