概述
case语句作用在流程控制语句的一种,在开发中经常用到,该语句可以对条件进行判断并且当有条件成立时返回一个值,比如要把SQL查询结果中的1、2、3和4代表的种类分别转换为“电气”、“农业”、“海洋”和“航空,其他数字代表的种类转换为“其他”,就可以使用case语句来完成。
语法简介
CASE [ expression ]
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
...
WHEN condition_n THEN result_n
ELSE result
END
参数说明:
expression:可选参数,其值是用来跟when后面的条件(condition_1, condition_2, …)进行比价的;
condition_1, condition_2, … condition_n:这些条件会依次被判断,一旦出现条件为真的情况,会立即返回该条件对应的then后的result值,并且不再对下面的条件进行判断;
result_1, result_2, … result_n:当对应条件成立时返回的值。
注意:
经过判断后当没有条件为真时,case语句将返回else后的值;如果else省略了,并且没有条件为真时case语句将返回NULL。
示例演示
凡是没有示例的讲解都是苍白的,下面通过两个例子来演示case语句的具体使用,一个例子case后带expression,另一个例子case后不带expression。
表ay_t中字段信息及数据如下,要实现的需求为把1、2、3和4代表的种类分别转换为“电气”、“农业”、“海洋”和“航空,其他数字代表的种类转换为“其他”:
id | y_type |
---|---|
1000 | 1 |
1001 | 2 |
1002 | 3 |
1003 | 4 |
1004 | 5 |
示例一——带有expression
select
y_type,
case y_type
when '1' then '电气'
when '2' then '农业'
when '3' then '海洋'
when '4' then '航空'
else '其他'
end y_name
from ay_t
查询结果为:
y_type | y_name |
---|---|
1 | 电气 |
2 | 农业 |
3 | 海洋 |
4 | 航空 |
5 | 其他 |
示例二——不带expression
select
y_type,
case
when y_type='1' then '电气'
when y_type='2' then '农业'
when y_type='3' then '海洋'
when y_type='4' then '航空'
else '其他'
end y_name
from ay_t
查询结果为:
y_type | y_name |
---|---|
1 | 电气 |
2 | 农业 |
3 | 海洋 |
4 | 航空 |
5 | 其他 |
可以看到两个示例查询结果一样。
在不带expression的示例中,每个condition可以是不同字段间的比较,从而实现复杂的逻辑。