控制流函数
更新时间:
控制流函数可以在SQL查询中实现条件判断。本文介绍云原生数据仓库 AnalyticDB MySQL 版控制流函数的用语与示例。
示例数据
本文的控制流函数以conditiontest表为测试数据。
创建测试表并写入测试数据:
CREATE TABLE conditiontest(a INT) DISTRIBUTED BY HASH(a);
INSERT INTO conditiontest VALUES (1),(2),(3);CASE
用法1
CASE expression
WHEN value THEN result
[WHEN value THEN result ...]
[ELSE result]
END 命令说明:
CASE表达式会依次对比expression和value。如果expression和value相等,则返回value对应的result;如果所有value都不等于expression,则返回ELSE对应的result。示例:
SELECT a, CASE a WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'three' END as caseresult FROM conditiontest;结果如下:
+---+------------+ | a | caseresult | +---+------------+ | 2 | two | | 1 | one | | 3 | three | +---+------------+
用法2
CASE
WHEN condition THEN result
[WHEN condition THEN result...]
[ELSE result]
END命令说明:
CASE表达式会依次计算condition。如果condition为true,则返回condition对应的result;如果所有condition都为false,则返回ELSE对应的result。示例:
SELECT a, CASE WHEN a=1 THEN 'one1' WHEN a=2 THEN 'two2' ELSE 'three3' END as caseresult FROM conditiontest;结果如下:
+---+------------+ | a | caseresult | +---+------------+ | 1 | one1 | | 3 | three3 | | 2 | two2 | +---+------------+
IF
用法1
IF(condition, true_value)命令说明:如果
condition为true,结果返回true_value;否则返回null。示例:
SELECT IF((2+3)>4,5);+-------+ | _col0 | +-------+ | 5 |
用法2
IF(condition, true_value, false_value)命令说明:如果
condition为true,结果返回true_value;否则结果返回false_value。示例:
SELECT IF((2+3)<5,5,6);+-------+ | _col0 | +-------+ | 6 |
IFNULL
IFNULL(expr1,expr2)命令说明:如果
expr1结果不为空,则返回expr1的值;否则返回expr2的值。示例:
示例1:
SELECT IFNULL(NULL,2);+-------+ | _col0 | +-------+ | 2 | +-------+示例2:
SELECT IFNULL(1,0);+-------+ | _col0 | +-------+ | 1 | +-------+
NULLIF
NULLIF(expr1,expr2)命令说明:如果
expr1与expr2值相等,结果返回null;否则结果返回expr1的值。示例:
示例1:
SELECT NULLIF (2,1);+-------+ | _col0 | +-------+ | 2 | +-------+示例2:
SELECT NULLIF (2,2);+-------+ | _col0 | +-------+ | NULL | +-------+
该文章对您有帮助吗?