Hive中是否有类似于Oracle中解码的功能?

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

我正在寻找一个类似于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(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,但需要在维护自定义代码方面进行权衡。