【Hive】條件函數

Hive版本: hive-1.1.0-cdh5.14.2

1. if函數

語法:if(boolean testCondition, T valueTrue, T valueFalseOrNull)
返回值: T
描述:如果testCondition爲true,返回valueTrue,否則返回valueFalseOrNull

0: jdbc:hive2://node03:10000> select if(1=2, 'TrueValue', 'FalseOrNull');
+--------------+--+
|     _c0      |
+--------------+--+
| FalseOrNull  |
+--------------+--+
2. 空值判斷函數:isnull / isnotnull

語法:isnull( a ) / isnotnull( a )
返回值:boolean
描述:isnull:如果a爲空,返回true,否則返回false; isnotnull:如果a不爲空,返回true,否則返回false

0: jdbc:hive2://node03:10000> select isnotnull(1) as col1, isnotnull(null) as col2;
+-------+--------+--+
| col1  |  col2  |
+-------+--------+--+
| true  | false  |
+-------+--------+--+
3. 去空函數: nvl

語法:nvl(T value, T default_value)
返回值: T
描述:如果value爲空,返回default_value,否則返回value

0: jdbc:hive2://node03:10000> select nvl(null, 'defaultValue') as col1, nvl(1, 'defaultValue') as clo2;
+---------------+-------+--+
|     col1      | clo2  |
+---------------+-------+--+
| defaultValue  | 1     |
+---------------+-------+--+
4. 非空查找函數:coalesce

語法: COALESCE(T v1, T v2, …)
返回值: T
描述:返回第一個不爲空的T值,如果都爲空,則返回空

0: jdbc:hive2://node03:10000> select coalesce(null,1,2,3) as col1, coalesce(null,null) as col2;
+-------+-------+--+
| col1  | col2  |
+-------+-------+--+
| 1     | NULL  |
+-------+-------+--+
5. 條件判斷函數: case when

語法:(1)CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
(2)CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END
返回值:T
描述:(1)如果a=b,返回c,如果a=d,返回e,否則返回f;
(2)如果a是true,返回b,如果c爲true,返回d,否則返回e;

0: jdbc:hive2://node03:10000> select case 1 when 1 then 1 when 2 then 2 else null end as col1,
. . . . . . . . . . . . . . > case when 1=1 then 1 else null end as col2;
+-------+-------+--+
| col1  | col2  |
+-------+-------+--+
| 1     | 1     |
+-------+-------+--+
6. 斷言函數: assert_true

語法: assert_true(boolean condition)
返回值:void
描述: 如果condition成立,返回null,不成立則拋出異常

0: jdbc:hive2://node03:10000> select assert_true(2<1);
Error: java.io.IOException: org.apache.hadoop.hive.ql.metadata.HiveException: ASSERT_TRUE(): assertion failed. (state=,code=0)

0: jdbc:hive2://node03:10000> select assert_true(1<2);
+-------+--+
|  _c0  |
+-------+--+
| NULL  |
+-------+--+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章