什么相当于Apache hive中的ELSEIF?

时间:2015-03-23 14:33:37

标签: hive

我正在寻找Apache Hive中的条件结构,如下面的Java代码:

if (condition) value
elseif (condition) value
...
else value

有没有办法在HiveQL中执行此操作?

1 个答案:

答案 0 :(得分:1)

您可以在HIVE中使用案例陈述

CASE声明

case语句的语法是:

CASE   [ expression ]
       WHEN condition1 THEN result1
       WHEN condition2 THEN result2
       ...
       WHEN conditionn THEN resultn
       ELSE result
END

此处表达式是可选的。它是您与条件列表进行比较的值。 (即:condition1,condition2,... conditionn)。

所有条件必须具有相同的数据类型。条件按列出的顺序评估。一旦发现条件为真,case语句将返回结果,而不再评估条件。

所有结果必须具有相同的数据类型。一旦发现条件为真,这就是返回的值。

如果没有发现条件为真,那么case语句将返回ELSE子句中的值。如果省略ELSE子句并且没有发现条件为真,那么case语句将返回NULL

示例:

CASE   Fruit
       WHEN 'APPLE' THEN 'The owner is APPLE'
       WHEN 'ORANGE' THEN 'The owner is ORANGE'
       ELSE 'It is another Fruit'
END

另一种形式的CASE是

CASE
       WHEN Fruit = 'APPLE' THEN 'The owner is APPLE'
       WHEN Fruit = 'ORANGE' THEN 'The owner is ORANGE'
       ELSE 'It is another Fruit'

END