Correto (mas observe que
IN
é um operador, não uma cláusula e funciona assim no SQL em geral, não apenas no Oracle). where 1 not in (null,1)
é equivalente a:
where 1 != null and 1 != 1
que realmente deve ser escrito como:
WHERE 1 NOT IN (NULL, 1)
e
WHERE 1 <> NULL AND 1 <> 1
que é o mesmo que:
WHERE (1 <> NULL) AND (1 <> 1)
que avalia para:
WHERE UNKNOWN AND FALSE
e ainda como:
WHERE FALSE
Portanto, ele não retorna corretamente nenhuma linha.
Observe que se você tivesse
WHERE 1 NOT IN (NULL, 2)
, seria avaliado como WHERE UNKNOWN
(deixado como exercício) e nenhuma linha também seria retornada.