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?

Oct 23, 2024 pm 05:43 PM

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!

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Kurangkan penggunaan memori MySQL di Docker Kurangkan penggunaan memori MySQL di Docker Mar 04, 2025 pm 03:52 PM

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table? Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table? Mar 19, 2025 pm 03:51 PM

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama Mar 04, 2025 pm 04:01 PM

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Apa itu SQLite? Gambaran Keseluruhan Komprehensif Apa itu SQLite? Gambaran Keseluruhan Komprehensif Mar 04, 2025 pm 03:55 PM

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin) Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin) Mar 04, 2025 pm 03:54 PM

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

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah Mar 04, 2025 pm 03:49 PM

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)? Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)? Mar 18, 2025 pm 12:00 PM

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

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL? Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL? Mar 18, 2025 pm 12:01 PM

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?

See all articles