WITH a as
( select 1 b, null c from dual)
select * from a
As expected: one line is returned
WITH a as
( select 1 b, null c from dual)
select * from a
where c=1
As expected: no line is returned. c is null. therefore it can't be 1
WITH a as
( select 1 b, null c from dual)
select * from a
where not(c=1 )
I didn't expected that. No lines are returned. c=1 is false. Therefore not (c=1) should be true