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

Patricia Arquette
Lepaskan: 2024-10-24 05:45:02
asal
685 orang telah melayarinya

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');
Salin selepas log masuk

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'
Salin selepas log masuk

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');
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!