Bagaimana Mengendalikan Nilai NULL dalam Kata Kunci IN MySQL untuk Penapisan Tepat?

Barbara Streisand
Lepaskan: 2024-10-23 16:09:02
asal
336 orang telah melayarinya

How to Handle NULL Values in MySQL's IN Keyword for Accurate Filtering?

Memahami NULL Handling dalam MySQL's IN Keyword

MySQL's IN keyword mengembalikan hasil boolean, tetapi penting untuk ambil perhatian bahawa ia tidak selalunya kembalikan 1 (benar) atau 0 (salah). Kes khas NULL boleh memperkenalkan gelagat yang tidak dijangka, terutamanya apabila menapis data.

Kes NULL dalam IN

Pertanyaan berikut mengecualikan baris dengan sama ada lajur Ralat 'Tamat masa' atau 'Ralat Sambungan':

select count(*) from Table1 where CurrentDateTime>'2012-05-28 15:34:02.403504' and Error not in ('Timeout','Connection Error')
Salin selepas log masuk

Walau bagaimanapun, pertanyaan ini tidak termasuk baris dengan Ralat adalah NULL. Ini kerana pengendali IN menilai kepada NULL apabila membandingkan nilai kepada NULL. Akibatnya, ungkapan "Ralat tidak dalam ('Tamat masa','Ralat Sambungan')" adalah palsu untuk baris dengan nilai NULL.

Penyelesaian untuk Pengendalian NULL

Untuk mendapatkan semula hasil yang betul apabila berurusan dengan nilai NULL, terdapat beberapa pendekatan:

1. Gunakan COALESCE() untuk Lalai kepada Rentetan Kosong

COALESCE(Error,'') not in ('Timeout','Connection Error')
Salin selepas log masuk

2. Gunakan ATAU untuk Menguji NULL dan Ketaksamaan Nilai

Error IS NULL OR Error not in ('Timeout','Connection Error')
Salin selepas log masuk

3. Gunakan CASE untuk Meniru Penilaian Boolean

CASE WHEN Error IS NULL THEN 1
 ELSE Error not in ('Timeout','Connection Error') THEN 1
 END = 1
Salin selepas log masuk

Sensitiviti dan Prestasi Kes

ATAU tidak litar pintas, bermakna ia akan menilai kedua-dua ungkapan walaupun jika yang pertama adalah palsu. CASE, sebaliknya, boleh menghentikan penilaian jika syarat pertama dipenuhi. Ini membawa kepada prestasi yang lebih baik apabila terdapat banyak nilai NULL yang berpotensi.

Contoh Perbandingan Null

Untuk menggambarkan kelakuan NULL dalam ungkapan IN, pertimbangkan jadual berikut:

msg description
hi greet
NULL nothing

Ungkapan:

select 'hulk' as x, msg, description from tbl where msg not in ('bruce','banner')
Salin selepas log masuk

hanya akan mengembalikan baris dengan 'hai'. Ini kerana msg adalah NULL untuk baris yang lain, yang menghasilkan perbandingan yang tidak dapat ditentukan.

Kesimpulannya, kata kunci IN MySQL mungkin mengembalikan NULL apabila membandingkan dengan nilai NULL, yang membawa kepada hasil yang tidak dijangka dalam penapisan. Untuk menangani perkara ini, gunakan salah satu penyelesaian yang dibincangkan di atas untuk memastikan pengambilan data yang tepat.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Nilai NULL dalam Kata Kunci IN MySQL untuk Penapisan Tepat?. 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!