La query A è la stessa di:
select 'true' where 3 = 1 or 3 = 2 or 3 = 3 or 3 = null
Poiché 3 = 3
è vero, ottieni un risultato.
La query B è la stessa di:
select 'true' where 3 <> 1 and 3 <> 2 and 3 <> null
Quando ansi_nulls
è attivo, 3 <> null
è UNKNOWN, quindi il predicato restituisce UNKNOWN e non ottieni alcuna riga.
Quando ansi_nulls
è disattivato, 3 <> null
è true, quindi il predicato restituisce true e ottieni una riga.