HiveQL函数5—条件函数

1.if(boolean testCondition, T valueTrue, T valueFalseOrNull)

返回值:T
功能:当 testCondition 为true时,返回 valueTrue,否则返回 valueFalseOrNull
示例:

> select if(1>2,5,10) as f1;
+-----+
| f1  |
+-----+
| 10  |
+-----+

2.isnull( a )

返回值:boolean
功能:如果a为NULL返回true,否则返回false
示例:

> select isnull(NULL) as f1;
+-------+
|  f1   |
+-------+
| true  |
+-------+

> select isnull("abc") as f1;
+--------+
|   f1   |
+--------+
| false  |
+--------+

3.isnotnull ( a )

返回值:boolean
功能:如果a不为NULL返回true,否则返回false
示例:

> select isnotnull("abc") as f1;
+-------+
|  f1   |
+-------+
| true  |
+-------+

> select isnotnull(NULL) as f1;
+--------+
|   f1   |
+--------+
| false  |
+--------+

4.nvl(T value, T default_value)

返回值:T
功能:当 value 为NULL时,返回default_value ,否则返回 valuel
示例:

> select nvl(NULL,123) as f1;
+------+
|  f1  |
+------+
| 123  |
+------+

> select nvl('abc',123) as f1;
+------+
|  f1  |
+------+
| abc  |
+------+

5.COALESCE(T v1, T v2, …)

返回值:T
功能:返回第一非NULL的值,如果全部都为NULL就返回NULL
示例:

> select COALESCE(NULL,NULL,123) as f1;
+------+
|  f1  |
+------+
| 123  |
+------+

> select COALESCE(NULL,NULL,null) as f1;
+-------+
|  f1   |
+-------+
| NULL  |
+-------+

6.CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END

返回值:T
功能:如果a=b返回c, a=d就返回e,否则返回f
示例:

> select CASE 4 WHEN 5  THEN "hello" WHEN 4 THEN "world" ELSE 3 END as f1;
+--------+
|   f1   |
+--------+
| world  |
+--------+

7.CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END

返回值:T
功能:如果a=ture就返回b,c= ture就返回d,否则返回e
示例:

> select CASE WHEN  5>0  THEN "hello" WHEN 4>0 THEN "world" ELSE 0 END as f1;
+--------+
|   f1   |
+--------+
| hello  |
+--------+

> select CASE WHEN  5<0  THEN "hello"  ELSE "haha" END as f1;
+-------+
|  f1   |
+-------+
| haha  |
+-------+

8.nullif( a, b )

返回值:T
功能:如果a=b就返回NULL,否则返回a。(从Hive2.3.0开始),是CASE WHEN a = b then NULL else a的简写。
示例:

> select nullif(123,234) as f1;
+------+
|  f1  |
+------+
| 123  |
+------+

> select nullif(123,123) as f1;
+-------+
|  f1   |
+-------+
| NULL  |
+-------+

9.assert_true(boolean condition)

返回值:void
功能:如果condition不为true则抛出异常。否则返回NULL
示例:

> select assert_true(5>7) as f1;
Error: java.io.IOException: org.apache.hadoop.hive.ql.metadata.HiveException: ASSERT_TRUE(): assertion failed. (state=,code=0)

> select assert_true(5<7) as f1;
+-------+
|  f1   |
+-------+
| NULL  |
+-------+

参考

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-ConditionalFunctions
https://www.cnblogs.com/MOBIN/p/5618747.html#5

发布了57 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/CPP_MAYIBO/article/details/104065448
今日推荐