正确(但请注意,这IN
是一个运算符,而不是一个子句,它通常在sql中这样工作,不仅适用于Oracle)。
where 1 not in (null,1)
等效于:
where 1 != null and 1 != 1
实际应该写成:
WHERE 1 NOT IN (NULL, 1)
和
WHERE 1 <> NULL AND 1 <> 1
与以下内容相同:
WHERE (1 <> NULL) AND (1 <> 1)
结果为:
WHERE UNKNowN AND FALSE
并进一步作为:
WHERE FALSE
因此,它正确不返回任何行。
请注意,如果您有WHERE 1 NOT IN (NULL, 2)
,它将评估为WHERE UNKNowN
(在练习中保留),并且也不会返回任何行。