Rumah > pangkalan data > tutorial mysql > MySQL IN Operator dan Nilai Null: Mengapa Baris dengan Ralat Null Dikecualikan?

MySQL IN Operator dan Nilai Null: Mengapa Baris dengan Ralat Null Dikecualikan?

Patricia Arquette
Lepaskan: 2024-10-23 17:43:02
asal
801 orang telah melayarinya

MySQL IN Operator and Null Values: Why Are Rows with Null Errors Excluded?

Pengendali MySQL IN dan Nilai Null

Dalam MySQL, operator IN digunakan untuk menyemak sama ada nilai yang diberikan sepadan dengan sebarang nilai dalam sesuatu yang ditentukan senarai. Walau bagaimanapun, apabila menggunakan operator IN dengan nilai nol, tingkah laku yang tidak dijangka mungkin berlaku.

Mengapa Nilai NULL Dikecualikan

Operator MySQL IN mengembalikan hasil boolean (TRUE atau SALAH). Apabila membandingkan nilai bukan nol kepada null, hasilnya sentiasa FALSE. Akibatnya, apabila menggunakan IN untuk menyemak sama ada nilai tidak sama dengan mana-mana nilai dalam senarai yang termasuk null, semua baris dengan nilai null dikecualikan daripada hasilnya.

Membetulkan Isu

Untuk memasukkan nilai nol dalam hasil, pilihan berikut boleh digunakan:

  1. Fungsi COALESCE: Fungsi COALESCE boleh menggantikan nilai nol dengan nilai lalai yang ditentukan . Menggunakan fungsi ini, pertanyaan boleh diubah suai kepada:
Error = COALESCE(Error, '') NOT IN ('Timeout','Connection Error');
Salin selepas log masuk
  1. ATAU Operator: Operator OR boleh digunakan untuk menyemak kedua-dua kehadiran tertentu kod ralat dan ketiadaan nilai ralat nol. Oleh itu, pertanyaan boleh ditulis semula sebagai:
Error IS NULL OR Error NOT IN ('Timeout','Connection Error');
Salin selepas log masuk
  1. Kenyataan KES: Pernyataan CASE boleh digunakan untuk menilai berbilang syarat dan mengembalikan nilai tertentu berdasarkan hasilnya. Dalam kes ini, ia boleh digunakan untuk mencipta ungkapan boolean yang mengembalikan TRUE untuk baris dengan ralat bukan nol. Pertanyaan boleh diubah suai kepada:
CASE WHEN Error IS NULL THEN 1
ELSE Error NOT IN ('Timeout','Connection Error') THEN 1
END = 1
Salin selepas log masuk
  1. SERTAI Subquery: SERTAI subquery boleh digunakan untuk mendapatkan semula data daripada berbilang jadual dan menggabungkan keputusan berdasarkan keadaan biasa. Kaedah ini boleh memastikan bahawa baris dengan ralat nol tidak dikecualikan:
SELECT t1.*
FROM Table1 t1
LEFT JOIN (
    SELECT Error
    FROM ErrorTable
    WHERE Error IN ('Timeout')
) t2 ON t1.Error = t2.Error;
Salin selepas log masuk

Kesimpulan

Apabila menggunakan operator IN dengan nilai nol, adalah penting untuk memahami bahawa pengendali menganggap null sebagai nilai istimewa. Untuk memasukkan nilai nol dalam hasil, syarat atau teknik tambahan, seperti yang dinyatakan di atas, mesti digunakan.

Atas ialah kandungan terperinci MySQL IN Operator dan Nilai Null: Mengapa Baris dengan Ralat Null Dikecualikan?. 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