问题描述
为什么查询不返回任何行?
SELECT 1 FROM sysibm.sysdummy1 WHERE 1 NOT IN (2,NULL)
解决方法
1 NOT IN (2,NULL)
等于1 <> 2 AND 1 <> NULL
1 <> NULL
的结果为UNKNOWN
,因此原始表达式的结果为:TRUE AND UNKNOWN
,即UNKNOWN
。
但是,您会得到行的结果,其中WHERE中的表达式仅求值为TRUE
。
为什么查询不返回任何行?
SELECT 1 FROM sysibm.sysdummy1 WHERE 1 NOT IN (2,NULL)
1 NOT IN (2,NULL)
等于1 <> 2 AND 1 <> NULL
1 <> NULL
的结果为UNKNOWN
,因此原始表达式的结果为:TRUE AND UNKNOWN
,即UNKNOWN
。
但是,您会得到行的结果,其中WHERE中的表达式仅求值为TRUE
。