我有以下WHERE子句,我看到的结果是查询没有返回End_dt2为空的数据
如何返回列与空白不相等的位置?
以下值不会返回 表:
{{1}}
答案 0 :(得分:5)
如果end_dt2
为空,则任何比较都是未定义的,但不匹配。 Null behaviour is explained in the documentation。您可以将空值视为魔术日期,但您也可以明确检查空值:
where end_dt2 is null or end_dt != end_dt2
如果任一列都可以为null,并且您希望将其中一个(但不是两个)视为空,则将其视为“不同”。那么你可以这样做:
where (end_dt is not null and end_dt2 is null)
or (end_dt is null and and_dtl2 is not null)
or end_dt <> end_dt2
答案 1 :(得分:1)
空比较总是会产生问题。你应该添加一个NVL来处理:
WHERE End_dt <> NVL(End_dt2, date '9999-12-31')
当然,请注意,当End_dt2为null时,记录应出现在您的查询中。