我试图在SQL的Order By子句中使用CASE语句,我收到以下错误 期待的Char有NUMBER .. 期待的Char得到DATE ..
(CASE when inp='PAPER' then 'PAPERSTOCK'
when inp='DOCS' then 30
when inp='DATE' then SYSDATE
else 'NOTHING')
这是我的问题..我知道CASE只返回一种类型的数据类型。我有一个要求,根据输入Order By Clause应该改变.. CASE语句应该返回DATE / NUMBER / VARCHAR ..
这可能还是我们还有其他选择吗?
答案 0 :(得分:3)
你有三种不同的数据类型被返回。您有两种选择:将它们转换为兼容格式(字符串)或使用多个案例语句。
对于后者:
order by (CASE when inp = 'PAPER' then PAPERSTOCK end),
(CASE when inp = 'DOCS' then DOCS end),
(CASE when inp = 'DATE' then INPUTDATE end)
我更改了then
值以引用类名而不是常量。如果你按常数排序,那么输入是什么并不重要。