我正在寻找一个像Oracle的DECODE一样工作的字符串函数
使表tab
包含一列col
col
----
a
b
c
d
使用简单的查询:
select decode(col,'a',1,'b',2',9) dec from tab
我希望得到这样的结果:
dec
---
1
2
9
9
我还没有在语言手册中找到任何内置函数。有没有可以模拟DECODE的UDF?
我不想使用case
条款。
问候
的Pawel
答案 0 :(得分:4)
您可以编写嵌套的if
语句。
<强>查询强>:
select col
, if(col='a', 1, if(col='b', 2, 9)) dec
from table
<强>输出强>:
---------
col | dec
---------
a 1
b 2
c 9
d 9
答案 1 :(得分:1)
使用扁平CASE THEN表达式时,可能更容易阅读和检查是否避免嵌套:
SELECT
CASE
WHEN col = 'a' THEN 1
WHEN col = 'b' THEN 2
ELSE 9
END dec
FROM tab