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

Bagaimanakah Nilai NULL Mempengaruhi Keputusan SQL NOT IN Klausa?

Patricia Arquette
Lepaskan: 2025-01-23 12:51:13
asal
708 orang telah melayarinya

How Do NULL Values Affect the Results of SQL's NOT IN Clause?

Klausa NOT IN SQL dan Nuansa Nilai NULL

Klausa NOT IN dalam SQL berfungsi untuk mengecualikan baris nilai yang sepadan dalam senarai yang ditentukan. Walau bagaimanapun, kehadiran nilai NULL dalam senarai ini memperkenalkan kerumitan.

Isu: Keputusan Tidak Dijangka dengan NULL

Pertimbangkan pertanyaan SQL ini:

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

Pertanyaan A menghasilkan hasil, manakala Pertanyaan B tidak. Ini berpunca daripada cara SQL mengendalikan NULL perbandingan. Pertanyaan A menyemak jika 3 sama dengan mana-mana nilai dalam senarai. Oleh kerana 3 sama dengan 3, ia mengembalikan hasil.

Pertanyaan B, sebaliknya, menyemak sama ada 3 adalah tidak sama dengan setiap nilai. Dengan ANSI_NULLS didayakan (lalai dalam banyak sistem), perbandingan yang melibatkan NULL menghasilkan UNKNOWN. UNKNOWN tidak benar dan tidak palsu; oleh itu, Pertanyaan B tidak mengembalikan baris.

Tetapan ANSI_NULLS dan Pengaruhnya

Melumpuhkan ANSI_NULLS mengubah NULL gelagat perbandingan. Dengan ANSI_NULLS dimatikan, perbandingan dengan NULL mengembalikan BENAR jika nilainya tidak sama dan FALSE jika sama. Akibatnya, Pertanyaan B akan mengembalikan hasil dengan ANSI_NULLS dilumpuhkan kerana 3 NOT IN (1, 2, NULL) akan menilai kepada BENAR.

Memahami Sifat NULL

Adalah penting untuk diingat bahawa NULL menandakan nilai yang tidak diketahui. Membandingkan NULL kepada sebarang nilai sentiasa menghasilkan UNKNOWN kerana kesaksamaan atau ketidaksamaan tidak dapat ditentukan secara muktamad. Apabila menggunakan NOT IN dengan nilai NULL, isu yang berpotensi mesti dijangkakan, dan teknik yang sesuai—seperti semakan NULL eksplisit atau menggunakan COALESCE untuk menggantikan NULL dengan nilai yang diketahui—harus dilaksanakan untuk pengendalian pertanyaan yang mantap .

Atas ialah kandungan terperinci Bagaimanakah Nilai NULL Mempengaruhi Keputusan SQL NOT IN Klausa?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan