Zapytanie A jest takie samo jak:
select 'true' where 3 = 1 or 3 = 2 or 3 = 3 or 3 = null
Ponieważ 3 = 3 to prawda, otrzymasz wynik.
Zapytanie B jest takie samo jak:
select 'true' where 3 <> 1 and 3 <> 2 and 3 <> null
Kiedy ansi_nulls jest włączone, 3 <> null jest NIEZNANE, więc predykat przyjmuje wartość NIEZNANE i nie otrzymujesz żadnych wierszy.
Kiedy ansi_nulls jest wyłączone, 3 <> null jest prawdziwe, więc predykat ma wartość prawda i otrzymujesz wiersz.