目录
- 1.if(boolean testCondition, T valueTrue, T valueFalseOrNull)
- 2.isnull( a )
- 3.isnotnull ( a )
- 4.nvl(T value, T default_value)
- 5.COALESCE(T v1, T v2, ...)
- 6.CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
- 7.CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END
- 8.nullif( a, b )
- 9.assert_true(boolean condition)
- 参考
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