【发布时间】:2012-02-22 05:46:39
【问题描述】:
我想知道是否可以将值与解码函数中的项目列表进行比较。基本上我想知道是否可以将解码语句的 'search' 值设为一个列表。例如,
decode(task_id, (1,2,3), 3 * task_time)
虽然这段代码不会编译。那么这是这种情况的唯一选择(不使用case-when)还是有其他方法可以做到这一点?
decode(task_id, 1, 3 * task_time,
2, 3 * task_time,
3, 3 * task_time)
我正在使用 Oracle 10gR2。非常感谢任何帮助。
【问题讨论】:
-
虽然我理解你不愿意使用
case声明 - 我不认为它们看起来很干净 - 它们比解码功能强大得多,可以在更多地方使用,并且可以跨 RDBMS 转移. @Codo 的答案就是您需要的答案。 -
棘手的问题。但是为什么你不使用 CASE?解码对你有好处吗?
-
这个问题只是我个人兴趣的结果。此外,我想在用大数据填充相关表后测试解码函数与 case 子句。
-
您使用的是 Oracle 10g。为什么要尝试让 DECODE() 做一些它不能做的事情,而不是使用可以做的 CASE()?
-
好的。大多数答案和 cmets 证明,在我的案例中使用 case 子句是理想的解决方案。所以,我将在这里接受@Codo 的回答。谢谢大家的回复。