Hive中 case when then 的两种语法结构:
-
条件判断函数case A when B then C ,case和when是分开的
语法:CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
说明:如果a等于b,那么返回c;如果a等于d,那么返回e;否则返回f。注意这种when的判断条件可以有很多个。如CASE 4 WHEN 5 THEN 5 WHEN 4 THEN 4 ELSE 3 END 将返回4。
示例1:
-
select case 100
-
when 50 then 'tom'
-
when 100 then 'mary'
-
else 'tim' end
-
from lxw_dual;
-
--mary
-
select case 200 when 50 then 'tom'when 100 then 'mary' else 'tim' end from lxw_dual;
-
--tim
-
这种语法第一个case when是一起的,用于处理单个列的查询结果,类似于if判断
语法:CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END
说明:如果a为TRUE,则返回b;如果c为TRUE,则返回d;否则返回e 如:CASE WHEN 5>0 THEN 5 WHEN 4>0 THEN 4 ELSE 0 END 将返回5;CASE WHEN 5<0 THEN 5 WHEN 4<0 THEN 4 ELSE 0 END 将返回0。
示例2:
-
select case when 1=2 then 'tom' when 2=2 then 'mary' else 'tim' end from lxw_dual;
-
--mary
-
select case when 1=1 then 'tom' when 2=2 then 'mary' else 'tim' end from lxw_dual;
-
--tom