


MySQL IN Operator dan Nilai Null: Mengapa Baris dengan Ralat Null Dikecualikan?
Oct 23, 2024 pm 05:43 PMPengendali 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:
- 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');
- 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');
- 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
- 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;
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!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)?

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?
