Bu takdirde hiçbir satır döndürülür anlamına gelir @regionise NULLilk örnekte kullanılan zaman tabloda satır olduğunda bile, Regionbir NULL.
Ne zaman ANSI_NULLSaçıksa (yine de her zaman ayarlamanız gerekir, çünkü bunu göstermeme seçeneği gelecekte kaldırılacaktır), işlenenlerden birinin (en azından) olduğu herhangi bir karşılaştırma işlemi NULLüçüncü mantık değerini üretir - UNKNOWN( TRUEve FALSE) aksine .
UNKNOWNdeğerler, önceden karar verilmemişse (örneğin ANDbir FALSEişlenenle veya ORbir TRUEişlenenle) veya olumsuzluklarla ( NOT) herhangi bir birleştirici mantıksal işleç yoluyla yayılır .
WHEREMaddesi tarafından üretilen sonuç kümesi filtrelemek için kullanılır FROMmadde, toplam değer, bu WHEREmadde olmalıdır TRUEsatır için filtrelenebilir değil. Dolayısıyla, UNKNOWNherhangi bir karşılaştırma ile üretilirse, satırın filtrelenmesine neden olur.
@ user1227804'ün cevabı şu alıntıyı içerir:
Karşılaştırmanın her iki tarafı da sütun veya bileşik ifadeyse, ayar karşılaştırmayı etkilemez.
itibaren *SET ANSI_NULLS
Bununla birlikte, hangi noktaya gelmeye çalıştığından emin değilim, çünkü iki NULLsütun karşılaştırılırsa (örneğin a'da JOIN), karşılaştırma yine de başarısız olur:
create table
ID int not null,
Val1 varchar(10) null
)
insert into
create table
ID int not null,
Val1 varchar(10) null
)
insert into
select * from
Yukarıdaki sorgu 0 satır döndürürken:
select * from
Bir satır döndürür. Yani her iki işlenen de sütun olsa bile NULLeşit değildir NULL. Ve dokümantasyonunda= işlenenler hakkında söylenecek hiçbir şey yok:
İki NULLifadeyi karşılaştırdığınızda , sonuç ANSI_NULLSayara bağlıdır :
Olarak ANSI_NULLSayarlanırsa , ANSI kuralına göre, bir (veya bilinmeyen) değerin başka veya bilinmeyen bir değere eşit olmadığı ONsonucu NULL1 olur .NULLNULL
Olarak ANSI_NULLSayarlanmışsa OFF, NULLkarşılaştırmanın sonucu NULLeşittir TRUE.
Değer NULLolmayan ile karşılaştırmak NULLher zaman FALSE2 ile sonuçlanır .
Ancak, her iki 1 ve 2 yanlıştır - her ikisi de karşılaştırmalar sonucudur UNKNOWN.
* Bu metnin şifreli anlamı nihayet yıllar sonra keşfedildi. Gerçekte anlamı, bu karşılaştırmalar için ayarın hiçbir etkisinin olmaması ve her zaman ayar AÇIKmış gibi davranmasıdır . SET ANSI_NULLS OFFHiçbir etkisi olmayan ortam olduğunu belirtmiş olsaydı daha net olurdu .