条件判断函数
create table conditiontest(a int) distributed by hash(a);
insert into conditiontest values (1),(2),(3);
SELECT * FROM conditiontest;
+---+
| a |
+---+
| 2 |
| 1 |
| 3 |
CASE
CASE expression
WHEN value THEN result
[ WHEN ... ]
[ ELSE result ]
END
命令说明:简单
CASE
表达式会从左到右依次查找value
,直到找到和expression
相等的value
,并返回对应的result
结果;如果没有找到相等的value
,则返回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 |
CASE
WHEN condition THEN result
[ WHEN ... ]
[ ELSE result ]
END
命令说明:高级
CASE
表达式会从左到右依次计算condition
,直到第一个为TRUE
的condition
,并返回对应的result
结果;如果没有找到为TRUE
的condition
,则返回ELSE
语句后的result
结果。示例:
SELECT a,
CASE a
WHEN a=1 THEN 'one1'
WHEN a=2 THEN 'two2'
ELSE 'three3'
END as caseresult
FROM conditiontest;
+---+------------+
| a | caseresult |
+---+------------+
| 1 | one1 |
| 3 | three3 |
| 2 | three3 |
IF
if(condition, true_value)
命令说明:如果
condition
为true
,结果返回true_value
;否则返回null
。示例:
SELECT IF((2+3)>4,5);
+-------+
| _col0 |
+-------+
| 5 |
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
的值。示例:
SELECT IFNULL(NULL,2);
+-------+
| _col0 |
+-------+
| 2 |
SELECT IFNULL(1,0);
+-------+
| _col0 |
+-------+
| 1 |
NULLIF
NULLIF(expr1,expr2)
命令说明:如果
expr1
与expr2
值相等,结果返回null
;否则结果返回expr1
的值。示例:
SELECT NULLIF (2,1);
+-------+
| _col0 |
+-------+
| 2 |
SELECT NULLIF (2,2);
+-------+
| _col0 |
+-------+
| NULL |
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论