Rumah >pangkalan data >tutorial mysql >Mengapa `NULL = NULL` Kembali Palsu dalam SQL Server (dan Bagaimana `ansi_nulls` Mempengaruhinya)?

Mengapa `NULL = NULL` Kembali Palsu dalam SQL Server (dan Bagaimana `ansi_nulls` Mempengaruhinya)?

Barbara Streisand
Barbara Streisandasal
2025-01-20 23:09:09444semak imbas

Why `NULL = NULL` is False in SQL Server (and the `ansi_nulls` Setting)

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!

Kenyataan:
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