Dotaz A je stejný jako:
select 'true' where 3 = 1 or 3 = 2 or 3 = 3 or 3 = null
Protože 3 = 3
je pravda, dostanete výsledek.
Dotaz B je stejný jako:
select 'true' where 3 <> 1 and 3 <> 2 and 3 <> null
Když ansi_nulls
je zapnuto, 3 <> null
je NEZNÁMÝ, takže predikát se vyhodnotí jako NEZNÁMÝ a nezískáte žádné řádky.
Když ansi_nulls
je vypnuto, 3 <> null
je pravda, takže predikát se vyhodnotí jako pravdivý a dostanete řádek.