Correct (maar merk op dat IN
is een operator, geen clausule en het werkt zo in SQL in het algemeen, niet alleen voor Oracle).
where 1 not in (null,1)
is gelijk aan:
where 1 != null and 1 != 1
die eigenlijk zou moeten worden geschreven als:
WHERE 1 NOT IN (NULL, 1)
en
WHERE 1 <> NULL AND 1 <> 1
wat hetzelfde is als:
WHERE (1 <> NULL) AND (1 <> 1)
wat resulteert in:
WHERE UNKNOWN AND FALSE
en verder als:
WHERE FALSE
Het retourneert dus correct geen rijen.
Merk op dat als u WHERE 1 NOT IN (NULL, 2)
. had , zou het resulteren in WHERE UNKNOWN
(links als oefening) en er worden ook geen rijen geretourneerd.