在我的查询中,我使用了一个case语句,它总是返回else值,这里是查询:
CASE WHEN CC.IBUS_CODE = null then to_char(vDQ.COA_CAT_ID) ELSE (vDQ.COA_CAT_ID ||' | '||CC.IBUS_CODE) end AS COA_CAT_ID
here is the output
COA_CAT_ID
4800 |
4700 | 31113
4600 | 31112
4500 | 31111
4900 |
Expected output
COA_CAT_ID
4800
4700 | 31113
4600 | 31112
4500 | 31111
4900
发布于 2019-05-28 08:23:07
case表达式的问题是,您正在检查等于null的列-这是不正确的。= null
是返回null而不是true或false的东西,这意味着您的case语句将始终放入else部分。
相反,您需要使用is null
,例如:
CASE WHEN CC.IBUS_CODE is null
then to_char(vDQ.COA_CAT_ID)
ELSE (vDQ.COA_CAT_ID ||' | '||CC.IBUS_CODE)
END AS COA_CAT_ID
演示问题和修复的Here's a db<>fiddle。
https://stackoverflow.com/questions/56336308
复制