文章目录
原文:Apache Spark SQL --- Conditional Functions
本分类按照 Spark SQL 官方目录函数顺序整理,共 12 个函数。
1、between
语法
sql
input [NOT] between lower AND upper
说明
判断输入值是否处于给定下界和上界之间(或不在区间内)。
示例
sql
> SELECT 0.5 between 0.1 AND 1.0;
true
引入版本: 1.0.0
2、case
语法
sql
CASE expr1 WHEN expr2 THEN expr3 [WHEN expr4 THEN expr5]* [ELSE expr6] END
说明
依次比较表达式与各 WHEN 值,返回第一个匹配分支的结果,否则返回 ELSE。
示例
sql
> SELECT CASE col1 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE '?' END FROM VALUES 1, 2, 3;
one
two
?
引入版本: 1.0.1
3、coalesce
语法
sql
coalesce(expr1, expr2, ...)
说明
返回首个非 NULL 参数;不存在时返回 NULL。
示例
sql
> SELECT coalesce(NULL, 1, NULL);
1
引入版本: 1.0.0
4、if
语法
sql
if(expr1, expr2, expr3)
说明
条件 expr1 为 TRUE 时返回 expr2,否则返回 expr3。
示例
sql
> SELECT if(1 < 2, 'a', 'b');
a
引入版本: 1.0.0
5、ifnull
语法
sql
ifnull(expr1, expr2)
说明
expr1 为 NULL 时返回 expr2,否则返回 expr1。
示例
sql
> SELECT ifnull(NULL, array('2'));
["2"]
引入版本: 2.0.0
6、nanvl
语法
sql
nanvl(expr1, expr2)
说明
expr1 不是 NaN 时返回它,否则返回 expr2。
示例
sql
> SELECT nanvl(cast('NaN' as double), 123);
123.0
引入版本: 1.5.0
7、nullif
语法
sql
nullif(expr1, expr2)
说明
两参数相等时返回 NULL,否则返回 expr1。
示例
sql
> SELECT nullif(2, 2);
NULL
引入版本: 2.0.0
8、nullifzero
语法
sql
nullifzero(expr)
说明
expr 等于零时返回 NULL,否则返回原值。
示例
sql
> SELECT nullifzero(0);
NULL
引入版本: 4.0.0
9、nvl
语法
sql
nvl(expr1, expr2)
说明
expr1 为 NULL 时返回 expr2,否则返回 expr1。
示例
sql
> SELECT nvl(NULL, array('2'));
["2"]
引入版本: 2.0.0
10、nvl2
语法
sql
nvl2(expr1, expr2, expr3)
说明
expr1 非 NULL 时返回 expr2,否则返回 expr3。
示例
sql
> SELECT nvl2(NULL, 2, 1);
1
引入版本: 2.0.0
11、when
语法
sql
CASE WHEN expr1 THEN expr2 [WHEN expr3 THEN expr4]* [ELSE expr5] END
说明
顺序检测 WHEN 条件,返回第一个条件为 TRUE 的分支结果,否则返回 ELSE。
示例
sql
> SELECT CASE WHEN 1 > 0 THEN 1 WHEN 2 > 0 THEN 2.0 ELSE 1.2 END;
1.0
引入版本: 1.0.1
12、zeroifnull
语法
sql
zeroifnull(expr)
说明
expr 为 NULL 时返回零,否则返回原值。
示例
sql
> SELECT zeroifnull(NULL);
0
引入版本: 4.0.0