Rumah >pangkalan data >tutorial mysql >Mengapa `NULL = NULL` Kembali Palsu dalam SQL Server (dan Bagaimana `ansi_nulls` Mempengaruhinya)?
Memahami Mengapa NULL = NULL
Mengembalikan Palsu dalam Pelayan SQL
Pengendalian nilai NULL
SQL Server selalunya membawa kepada hasil yang tidak dijangka. Operator =
, apabila membandingkan lajur boleh batal, mengembalikan <code>false</code> kerana NULL
menandakan nilai yang tidak diketahui atau hilang.
Keadaan klausa WHERE
seperti nullParam = NULL
sentiasa menilai kepada <code>false</code>. Ini kerana adalah mustahil untuk mengesahkan kesamaan secara muktamad antara dua kuantiti yang tidak diketahui.
Piawaian SQL-92 menentukan tingkah laku ini: NULL = NULL
tidak benar atau palsu; ia tidak ditentukan.
Kesan daripada ansi_nulls
Tetapan
Tingkah laku berubah secara mendadak bergantung pada tetapan ansi_nulls
. Dengan ansi_nulls
ditetapkan kepada OFF
, NULL = NULL
secara mengejutkan menilai kepada <code>true</code>. Ini ditunjukkan di bawah:
Contoh Kod:
<code class="language-sql">SET ANSI_NULLS OFF; IF NULL = NULL PRINT 'true'; ELSE PRINT 'false'; SET ANSI_NULLS ON; IF NULL = NULL PRINT 'true'; ELSE PRINT 'false';</code>
Output:
Dengan ansi_nulls OFF
:
<code>true</code>
Dengan ansi_nulls ON
:
<code>false</code>
Amalan Terbaik untuk Mengendalikan NULL
Disebabkan kebolehubahan ini, adalah penting untuk mengetahui tetapan ansi_nulls
apabila bekerja dengan NULL
perbandingan. Untuk mengelakkan kekaburan, sentiasa gunakan IS NULL
dan IS NOT NULL
apabila menyemak nilai NULL
. Ini memastikan tingkah laku yang konsisten dan boleh diramal tanpa mengira tetapan ansi_nulls
. Ini ialah pendekatan yang disyorkan untuk kod SQL yang boleh dipercayai.
Atas ialah kandungan terperinci Mengapa `NULL = NULL` Kembali Palsu dalam SQL Server (dan Bagaimana `ansi_nulls` Mempengaruhinya)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!