Memahami Mengapa NULL = NULL adalah Palsu dalam SQL Server
Dalam SQL Server, keadaan klausa WHERE
seperti nullParam = NULL
dinilai sebagai palsu. Ini mungkin kelihatan berlawanan dengan intuisi, memandangkan NULL
selalunya menandakan data yang hilang. Kuncinya ialah memahami tafsiran SQL Server tentang NULL
.
NULL
bukan sekadar mewakili data yang hilang; ia mewakili nilai yang tidak diketahui atau tidak wujud. Oleh itu, membandingkan dua nilai NULL
sememangnya tidak tentu. Kita tidak boleh mengatakan secara pasti sama ada dua yang tidak diketahui adalah sama atau tidak sama. Ketidakpastian ini mengakibatkan penilaian palsu.
Ini sejajar dengan standard ANSI SQL-92. Secara lalai, SQL Server beroperasi dengan ANSI_NULLS ON
, menguatkuasakan tingkah laku ini. Walau bagaimanapun, tetapan ANSI_NULLS OFF
menukar hasil perbandingan kepada benar.
Pertimbangkan contoh ini:
<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>
Dengan ANSI_NULLS OFF
, output adalah 'benar'. Dengan ANSI_NULLS ON
(lalai), output adalah 'palsu', menunjukkan cara tetapan ini mengawal pengendalian SQL Server terhadap NULL
perbandingan. Menggunakan IS NULL
ialah pendekatan yang betul untuk menyemak nilai nol.
Atas ialah kandungan terperinci Mengapa NULL = NULL Mengembalikan Palsu dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!