MySQL case when 用法
MySQL case when 用法
最近有个需求,需要对返回结果判断并进行结果映射,使用到了 case when 语句。
1、语法
1.1、简单函数
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
1.2、搜索函数
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
2、示例
2.1、简单函数示例
这里以查询 user 的 sex 字段为例, 当 sex = 'f' 时结果映射为 '女', 反之映射为 '男':
select u.id, u.name,
case u.sex when 'f' then '女' else '男' end as sex
from user u
where u.id <= 3
结果如下:
可以看到 sex 字段的结果变为了 '男'、'女'。
2.2、搜索函数示例
同样查询 user 的 sex 字段,注意比较这两种写法的区别
select u.id, u.name,
case when u.sex = 'f' then '女' else '男' end as sex
from user u
where u.id <= 3
when后面是一个逻辑表达式,若表达式为真,则 sex 的结果为 '女',若表达式为假,则 sex 的结果为 '男',
执行查询可以得到上面示例一样的结果。
3、两种语法选择哪种?
一般情况下选择搜索函数,即第二种,能够面对更加复杂的查询。
现在要查询 user 的 age 字段,即客户的年龄,不同的 age 对应的年龄段称呼不同:
select u.id, u.name,
case when u.age <= 18 then '未成年'
when u.age between 19 and 40 then '青年'
else '中年' end as '年龄段'
from user u
where u.id <= 3
第一种语法无法满足这样复杂的查询,故学习使用搜索函数便可以了。
自我控制是最强者的本能-萧伯纳