Memahami NULL dalam Klausa NOT IN SQL
Tingkah laku fasal NOT IN
dalam SQL dipengaruhi dengan ketara oleh kehadiran nilai NULL
. Perbezaan halus ini boleh membawa kepada hasil yang tidak dijangka jika tidak dipertimbangkan dengan teliti. Contoh berikut menggambarkan tingkah laku ini.
Contoh Pertanyaan 1:
<code class="language-sql">select 'true' where 3 in (1, 2, 3, null)</code>
Pertanyaan ini dinilai kepada:
<code>3 = 1 OR 3 = 2 OR 3 = 3 OR 3 = NULL</code>
Oleh kerana 3 = 3
adalah benar, pertanyaan itu mengembalikan hasil.
Contoh Pertanyaan 2:
<code class="language-sql">select 'true' where 3 not in (1, 2, null)</code>
Ini bersamaan dengan:
<code class="language-sql">3 <> 1 AND 3 <> 2 AND 3 <> NULL</code>
Dengan ANSI_NULLS
didayakan (tetapan standard dalam kebanyakan pangkalan data SQL), 3 <> NULL
menilai kepada UNKNOWN
. Keadaan AND
dengan UNKNOWN
menghasilkan UNKNOWN
dan UNKNOWN
dianggap sebagai palsu dalam klausa WHERE
. Akibatnya, pertanyaan ini tidak mengembalikan baris.
Melumpuhkan ANSI_NULLS
mengubah tingkah laku ini. Tanpa ANSI_NULLS
, 3 <> NULL
mungkin bernilai benar, menyebabkan pertanyaan mengembalikan hasil. Ini menyerlahkan ketidakkonsistenan yang diperkenalkan oleh nilai NULL
.
Kesimpulan:
Apabila menggunakan NOT IN
, sentiasa ambil kira potensi NULL
nilai dalam senarai. Kehadiran NULL
memberi kesan ketara kepada hasil pertanyaan disebabkan oleh logik tiga nilai SQL (BENAR, SALAH, TIDAK DIKETAHUI). Adalah disyorkan untuk mengelakkan NOT IN
dengan nilai NULL
dan menggunakan pendekatan alternatif seperti NOT EXISTS
untuk hasil yang lebih boleh diramal dan boleh dipercayai.
Atas ialah kandungan terperinci Bagaimanakah Nilai NULL Mempengaruhi Keputusan NOT IN Klausa dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!