对于case语句,我有一个查询返回null(很好),但是当对每种情况使用where语句时,输出中都有记录。
select a,b,sysdate ,
CASE
WHEN a IS NULL AND SYSDATE > b THEN 'O'
WHEN a IS NULL AND SYSDATE <= b THEN 'W'
WHEN a > b THEN 'Fail'
WHEN a <= b THEN 'Pass'
else 'good'
END as result
from mytable
A_b_ null null 10-7月-19日良好 null null 10-7月-19日良好 null null 10-7月-19日良好 null null 10-7月-19日良好
在执行此查询(或其他两个)时,我已经输出了
select a,b,sysdate from mytable
where a > b
输出(其中查询):
A/b/ sysdate 10-APR-15\x{e76f}06-APR-15\x{e 010}7月10日至19日 06-APR-15\x{e76f}06-APR-15\x{e76f}7月10日至19日 02-APR-15\x{e76f}01-APR-15\x{e76f}7月10日至19日
select a,b,sysdate from mytable
where a IS NULL AND SYSDATE > b
select a,b,sysdate from mytable
where a <= b
发布于 2019-07-11 05:24:40
当where
语句获得null
值时,它返回unknown
,它从结果集中删除记录。
阅读有关Server中三个值逻辑的更多信息(只需google it :)。
这就是为什么你没有任何记录。例如,在a
列中,a
始终是null
,在rsult中不提供任何记录。
您需要使用coalesce
或类似的"null
-preventing“函数。
https://stackoverflow.com/questions/56981337
复制相似问题