if
语法: if(boolean testCondition, T valueTrue, T valueFalseOrNull)
返回值: T
说明: 当条件testCondition为TRUE时,返回valueTrue;否则返回valueFalseOrNull
举例:
hive> select if(1=2,100,200);
200
hive> select if(1=1,100,200);
100
nvl
语法: nvl(fieldName1, defaultVal)
非空查找函数: COALESCE
语法: COALESCE(T v1, T v2, …)
返回值: T
说明: 返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULL
举例:
hive> select COALESCE(null,'100','50′) from lxw_dual;
100
条件判断函数:CASE
语法1
CASE
a WHEN b THEN c
[WHEN d THEN e]*
[ELSE f]
END
返回值: T
说明:如果a等于b,那么返回c;如果a等于d,那么返回e;否则返回f
举例:
hive> Select case 100 when 50 then 'tom' when 100 then 'mary' else 'tim' end ;
hive> Select case 200 when 50 then 'tom' when 100 then 'mary'else 'tim' end ;
tim
语法2
CASE
WHEN a THEN b [WHEN c THEN d] [ELSE e]
END
语法:
CASE
WHEN Fruit = 'APPLE' THEN 'The owner is APPLE'
WHEN Fruit = 'ORANGE' THEN 'The owner is ORANGE'
ELSE 'It is another Fruit'
END
返回值: T
说明:如果a为TRUE,则返回b;如果c为TRUE,则返回d;否则返回e
举例:
hive> select case when 1=2 then 'tom' when 2=2 then 'mary' else 'tim' end;
mary
hive> select case when 1=1 then 'tom' when 2=2 then 'mary' else 'tim' end;
tom
COALESCE
如果status有值为status, 没有值则选black_flag, 如果black_flag也无值则为null
cast(COALESCE(t1.status,t1.black_flag) as int) as blackflag