Klauzula NOT IN i wartości NULL
Ten problem pojawił się, gdy otrzymałem różne rekordy, które uważałem za identyczne zapytania z użyciemnot in
where
ograniczenie, a drugie aleft join
. Tabela wnot in
ograniczenie miało jedną wartość pustą (złe dane), która spowodowała, że zapytanie zwróciło liczbę 0 rekordów. W pewnym sensie rozumiem dlaczego, ale mógłbym skorzystać z pomocy, aby w pełni zrozumieć koncepcję.
Aby to po prostu powiedzieć, dlaczego zapytanie A zwraca wynik, ale B nie?
A: select 'true' where 3 in (1, 2, 3, null)
B: select 'true' where 3 not in (1, 2, null)
To było na SQL Server 2005. Znalazłem także to wywołanieset ansi_nulls off
powoduje, że B zwraca wynik.