Hive中是否有类似于Oracle中解码的功能?
我正在寻找一个类似于Oracle的DECODE的字符串函数 表Hive中是否有类似于Oracle中解码的功能?,hive,Hive,我正在寻找一个类似于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 我在语言手册中没有找到任何内置函数。是否有任何UDF可以模拟解码 我不想使用case子句 问候 Pawel您可以编写嵌套的if语句 查询: select col , if(col='a', 1, if(c
tab
有一列col
col
----
a
b
c
d
通过一个简单的查询:
select decode(col,'a',1,'b',2',9) dec from tab
我希望结果是这样的:
dec
---
1
2
9
9
我在语言手册中没有找到任何内置函数。是否有任何UDF可以模拟解码
我不想使用case
子句
问候Pawel您可以编写嵌套的
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
输出:
select col
, if(col='a', 1, if(col='b', 2, 9)) dec
from table
---------
col | dec
---------
a 1
b 2
c 9
d 9
如果在以下表达式中使用平底格避免嵌套,则可能更易于阅读和检查:
SELECT
CASE
WHEN col = 'a' THEN 1
WHEN col = 'b' THEN 2
ELSE 9
END dec
FROM tab
我想这是最好的选择,很容易阅读。第三种方法是用Java开发一个UDF,但需要在维护自定义代码方面进行权衡。