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

结果如下:

image-20211228114251689

可以看到 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

第一种语法无法满足这样复杂的查询,故学习使用搜索函数便可以了。

posted @ 2021-12-28 13:40  MyDistance  阅读(818)  评论(0编辑  收藏  举报