Richtig (aber beachten Sie, dass IN
ist ein Operator, keine Klausel und funktioniert so in SQL im Allgemeinen, nicht nur für Oracle).
where 1 not in (null,1)
entspricht:
where 1 != null and 1 != 1
was eigentlich so geschrieben werden sollte:
WHERE 1 NOT IN (NULL, 1)
und
WHERE 1 <> NULL AND 1 <> 1
was dasselbe ist wie:
WHERE (1 <> NULL) AND (1 <> 1)
was ausgewertet wird zu:
WHERE UNKNOWN AND FALSE
und weiter als:
WHERE FALSE
Es gibt also korrekterweise keine Zeilen zurück.
Beachten Sie, dass wenn Sie WHERE 1 NOT IN (NULL, 2)
hatten , würde es zu WHERE UNKNOWN
ausgewertet werden (links als Übung) und es würden auch keine Zeilen zurückgegeben.