为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8.1
【操作系统】:
【CPU】:
【问题描述】*:
select case when b>0 then a/b else 0 end
from (select 1 a,0 b from dual)
判断一次不报错
select case when b>0 then a/b else 0 end,
case when b>0 then a/b else 0 end
from (select 1 a,0 b from dual)
写两遍,就除0错误
请问这是为什么呀,实际应用中有多次、多种复杂判断,最终精简sql后发现这样就报错
另外这个问题是在甲方的内网测试环境发现的,在我本地环境未重现
加个HINT试一下
select /*+ CASE_WHEN_CVT_IFUN(8)*/ case when b>0 then a/b else 0 end, case when b>0 then a/b else 0 end from (select 1 a,0 b from dual)