SELECT IF(true,'trans','age') AS result FROM system.dual LIMIT 1;
复制
IF
函数语法 | 返回类型 | 描述 |
---|---|---|
IF(booleantestCondition, valueTrue, valueFalseOrNull) |
String |
根据条件真假返回不同的值 |
参数说明:
-
booleantestCondition:一个结果为 Boolean 值的条件语句或表达式。
-
valueTrue:当参数 booleantestCondition 结果为 true 或 NULL 时,所返回的值。
-
valueFalseOrNull:当参数 booleantestCondition 结果为 false 或 NULL 时,所返回的值。
注意事项:
-
返回参数 valueTrue 或 valueFalseOrNull 为 NULL 或空串时,仍然按照函数规则输出。
使用示例:
返回示例:
+---------+ | result | +---------+ | trans | +---------+
复制
COALESCE
函数语法 | 返回类型 | 描述 |
---|---|---|
COALESCE(a1, a2, …) |
String |
返回第一个非 null 的值 |
参数说明:
-
a:参数。
注意事项:
-
'' 默认转换为 NULL,当遇到空串时(如 space(0))则返回空。
使用示例:
SELECT COALESCE(null,'trans','age') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+---------+ | result | +---------+ | trans | +---------+
复制
CASE…WHEN
函数语法 | 返回类型 | 描述 |
---|---|---|
CASE a WHEN b THEN c [WHEN d THEN e] [ELSE f] END |
相应参数类型 |
根据条件返回不同的值:如果 a=b,返回 c,a=d 返回 e,以此类推,其他情况返回 f。CASE 到 END 中间可以有多个 WHEN x THEN y 的控制语句。 |
参数说明:
-
a:被比较参数,与后面的参数 b,d 等进行比较。
-
b/d:条件参数,用于与 a 进行比较。
-
c/e/f:结果参数,当 a 与 b/d 比较时,满足哪一个条件就返回哪个条件参数对应的结果。
使用示例:
SELECT CASE 't' WHEN 't' THEN 'trans' ELSE 'product' END AS result FROM system.dual;
复制
返回示例:
+---------+ | result | +---------+ | trans | +---------+
复制
CASE WHEN
函数语法 | 返回类型 | 描述 |
---|---|---|
CASE WHEN a THEN b [WHEN c THEN d] [ELSE e] END |
相应参数类型 |
根据参数真假返回不同值,如果 a=true,返回 b,如果 c=true,返回 d,以此类推,其他情况返回 e。CASE 到 END 中间可以有多个 WHEN x THEN y 的控制语句。 |
参数说明:
-
a/c:条件参数,且必须为 BOOLEAN 值参数。
-
b/d/e:结果参数,对应的条件参数为 true 时,返回对应的结果。
使用示例:
SELECT CASE WHEN TRUE THEN 'trans' ELSE 'product' END AS result FROM system.dual;
复制
返回示例:
+---------+ | result | +---------+ | trans | +---------+
复制
multiIf
函数语法 | 返回类型 | 描述 |
---|---|---|
multiIf(cond_1, then_1, cond_2, then_2, …, else) |
相应参数类型 |
短路查询函数,允许在查询中更紧凑地编写 CASE 运算符。 |
参数说明
-
cond:条件表达式
-
then:满足对应条件时的取值
-
else:不满足所有条件时的取值
使用示例
select name,gpa, multiif(gpa>=3.5,'A',gpa < 3.5 and gpa >=3, 'B','C') level from zara order by gpa;
复制
返回示例
+-----------+------+--------+ | name | gpa | level | +-----------+------+--------+ | lisi | 2 | C | | zhaoliu | 2 | C | | zhangsan | 2 | C | | smith | 3.1 | B | | lily | 3.6 | A | | sara | 3.8 | A | | wangwu | 3.9 | A | +-----------+------+--------+
复制
[NOT] BETWEEN
函数语法 | 返回类型 | 描述 |
---|---|---|
a BETWEEN b AND c |
Boolean |
用于检查一个值 a 是否在给定的范围 [b,c] 内。当 a 在闭区间 [b,c] 内,则返回 TRUE,否则返回 FALSE,若 a、b、c 中任一值为 "NULL",则返回 NULL。 |
a NOT BETWEEN b AND c |
Boolean |
用于检查一个值 a 是否不在给定的范围 [b,c] 内。当 a 在闭区间 [b,c] 内,则返回 FALSE,否则返回 TRUE,若 a、b、c 中任一值为 "NULL",则返回 NULL。 |
参数说明
-
a:被检查的目标参数,可以为任意基本数据类型。
-
b:范围区间的较小值。
-
c:范围区间的较大值。
使用示例
SELECT 15 BETWEEN 12 AND 20 AS RESULT;
复制
返回示例
+---------+ | result | +---------+ | true | +---------+
复制
[NOT] IN
函数语法 | 返回类型 | 描述 |
---|---|---|
a IN range |
Boolean |
用于指定一个值是否在一个列表或子查询中。当 a 在范围 range 内,则返回 TRUE,否则返回 FALSE,若 a 或范围 range 为空 "NULL",则返回 NULL。 |
a NOT IN range |
Boolean |
用于指定一个值是否不在一个列表或子查询中。当 a 在范围 range 内,则返回 FALSE,否则返回 TRUE,若 a 或范围 range 为空 "NULL",则返回 NULL。 |
参数说明
-
a:被比较的对象,可以为任意基本数据类型。
-
range:用作比较的范围,可以是一个集合列表,也可以是一个子查询结果。
使用示例
SELECT 15 IN (1,11,18,20) AS RESULT;
复制
返回示例
+---------+ | result | +---------+ | false | +---------+
复制