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
Lepaskan: 2025-01-20 23:09:09
asal
492 orang telah melayarinya

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>
Salin selepas log masuk

Output:

Dengan ansi_nulls OFF:

<code>true</code>
Salin selepas log masuk

Dengan ansi_nulls ON:

<code>false</code>
Salin selepas log masuk

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!

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