Rumah > pangkalan data > tutorial mysql > Bagaimanakah Nilai NULL Mempengaruhi Hasil Klausa NOT IN?

Bagaimanakah Nilai NULL Mempengaruhi Hasil Klausa NOT IN?

DDD
Lepaskan: 2025-01-23 12:47:10
asal
448 orang telah melayarinya

How Do NULL Values Affect the Outcome of a NOT IN Clause?

Memahami NULL dan NOT IN Klausa

Ketidakkonsistenan sering timbul apabila menggunakan klausa NOT IN berbanding dengan LEFT JOINs, terutamanya apabila berurusan dengan nilai NULL. Mari kita periksa ini dengan dua contoh pertanyaan:

Pertanyaan A:

<code class="language-sql">SELECT 'true' WHERE 3 IN (1, 2, 3, NULL);</code>
Salin selepas log masuk

Pertanyaan B:

<code class="language-sql">SELECT 'true' WHERE 3 NOT IN (1, 2, NULL);</code>
Salin selepas log masuk

Pertanyaan A menghasilkan hasil, manakala Pertanyaan B tidak. Perbezaan ini berpunca daripada cara SQL mengendalikan perbandingan yang melibatkan nilai NULL.

Membedah Pertanyaan

Mari kita pecahkan setiap pertanyaan untuk memahami tingkah laku:

Pertanyaan A:

Pertanyaan ini boleh dipermudahkan kepada:

<code class="language-sql">SELECT 'true' WHERE 3 = 1 OR 3 = 2 OR 3 = 3 OR 3 = NULL;</code>
Salin selepas log masuk

Oleh kerana 3 = 3 menilai kepada TRUE, pertanyaan mengembalikan hasil.

Pertanyaan B:

Pertanyaan ini dipermudahkan kepada:

<code class="language-sql">SELECT 'true' WHERE 3 != 1 AND 3 != 2 AND 3 != NULL;</code>
Salin selepas log masuk

Dengan ANSI_NULLS didayakan (lalai dalam kebanyakan pangkalan data SQL), 3 != NULL menilai kepada UNKNOWN. Keadaan AND dengan UNKNOWN menyebabkan keseluruhan predikat menjadi UNKNOWN, menyebabkan tiada baris dikembalikan.

Jika ANSI_NULLS dilumpuhkan, 3 != NULL menilai kepada TRUE, berpotensi mengembalikan baris.

Kesimpulan

Kehadiran nilai NULL dalam klausa NOT IN memberi kesan ketara kepada hasil pertanyaan disebabkan oleh logik tiga nilai SQL (BENAR, SALAH, TIDAK DIKENALI) dan tetapan ANSI_NULLS. Adalah penting untuk mengetahui tingkah laku ini apabila menggunakan nilai NULL untuk mengelakkan hasil yang tidak dijangka. Menggunakan semakan LEFT JOIN dan IS NULL selalunya memberikan alternatif yang lebih dipercayai untuk mengendalikan nilai NULL dalam senario sedemikian.

Atas ialah kandungan terperinci Bagaimanakah Nilai NULL Mempengaruhi Hasil Klausa NOT IN?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan