条件函数
更新时间:2026-07-24
本页收录条件函数,用于处理 NULL 值的替换与判空分支,以及在多个表达式中取最大或最小值。
| 函数 | 别名 | 说明 |
|---|---|---|
coalesce |
— | 返回参数中第一个非 null 的值 |
greatest |
— | 返回表达式列表中的最大值 |
least |
— | 返回表达式列表中的最小值 |
nullif |
— | 两个表达式相等时返回 null,否则返回第一个表达式 |
nvl |
ifnull | 第一个表达式为 NULL 时返回第二个表达式 |
nvl2 |
— | 按第一个表达式是否为 NULL 返回不同的表达式 |
coalesce
返回参数中第一个非 null 的值;若所有参数均为 null,则返回 null。该函数常用于为 null 值代入默认值。
语法:coalesce(expression1[, ..., expression_n])
参数:
- expression1, expression_n:当之前的表达式为 null 时使用的表达式。可以是常量、列或函数,以及任意算术运算符的组合。可按需要传入任意数量的表达式参数。
示例:
SQL
1> select coalesce(null, null, 'timeseries');
2+----------------------------------------+
3| coalesce(NULL,NULL,Utf8("timeseries")) |
4+----------------------------------------+
5| timeseries |
6+----------------------------------------+
greatest
返回表达式列表中的最大值;若所有表达式均为 null,则返回 null。
语法:greatest(expression1[, ..., expression_n])
参数:
- expression1, expression_n:参与比较并返回最大值的表达式。可以是常量、列或函数,以及任意算术运算符的组合。可按需要传入任意数量的表达式参数。
示例:
SQL
1> select greatest(4, 7, 5);
2+--------------------------------------+
3| greatest(Int64(4),Int64(7),Int64(5)) |
4+--------------------------------------+
5| 7 |
6+--------------------------------------+
least
返回表达式列表中的最小值;若所有表达式均为 null,则返回 null。
语法:least(expression1[, ..., expression_n])
参数:
- expression1, expression_n:参与比较并返回最小值的表达式。可以是常量、列或函数,以及任意算术运算符的组合。可按需要传入任意数量的表达式参数。
示例:
SQL
1> select least(4, 7, 5);
2+-----------------------------------+
3| least(Int64(4),Int64(7),Int64(5)) |
4+-----------------------------------+
5| 4 |
6+-----------------------------------+
nullif
若 expression1 等于 expression2,返回 null;否则返回 expression1。可用于执行 coalesce 的反向操作。
语法:nullif(expression1, expression2)
参数:
- expression1:用于比较、并在等于 expression2 时返回的表达式。可以是常量、列或函数,以及任意运算符的组合。
- expression2:与 expression1 进行比较的表达式。可以是常量、列或函数,以及任意运算符的组合。
示例:
SQL
1> select nullif('timeseries', 'time');
2+-----------------------------------------+
3| nullif(Utf8("timeseries"),Utf8("time")) |
4+-----------------------------------------+
5| timeseries |
6+-----------------------------------------+
7> select nullif('timeseries', 'timeseries');
8+-----------------------------------------------+
9| nullif(Utf8("timeseries"),Utf8("timeseries")) |
10+-----------------------------------------------+
11| |
12+-----------------------------------------------+
nvl
若 expression1 为 NULL,返回 expression2;否则返回 expression1。
语法:nvl(expression1, expression2)
参数:
- expression1:非 null 时返回的表达式。可以是常量、列或函数,以及任意运算符的组合。
- expression2:当 expr1 为 null 时返回的表达式。可以是常量、列或函数,以及任意运算符的组合。
别名:ifnull
示例:
SQL
1> select nvl(null, 'a');
2+---------------------+
3| nvl(NULL,Utf8("a")) |
4+---------------------+
5| a |
6+---------------------+
7> select nvl('b', 'a');
8+--------------------------+
9| nvl(Utf8("b"),Utf8("a")) |
10+--------------------------+
11| b |
12+--------------------------+
nvl2
若 expression1 不为 NULL,返回 expression2;否则返回 expression3。
语法:nvl2(expression1, expression2, expression3)
参数:
- expression1:用于判空的表达式。可以是常量、列或函数,以及任意运算符的组合。
- expression2:当 expr1 不为 null 时返回的表达式。可以是常量、列或函数,以及任意运算符的组合。
- expression3:当 expr1 为 null 时返回的表达式。可以是常量、列或函数,以及任意运算符的组合。
示例:
SQL
1> select nvl2(null, 'a', 'b');
2+--------------------------------+
3| nvl2(NULL,Utf8("a"),Utf8("b")) |
4+--------------------------------+
5| b |
6+--------------------------------+
7> select nvl2('data', 'a', 'b');
8+----------------------------------------+
9| nvl2(Utf8("data"),Utf8("a"),Utf8("b")) |
10+----------------------------------------+
11| a |
12+----------------------------------------+
评价此篇文章
