为什么查询不返回任何行?

问题描述

为什么查询不返回任何行?

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