Mysql-case when 使用

一、case 使用场景

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搜索函数


CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE

二、使用示例

2.1 简单case函数


case `gender`
  when 1 then ''
  when 2 then ''
  else '未知'
end

2.2 case搜索函数


case 
    when gender = 1 then ''
    when gender = 2 then ''
    else '未知' 
end

准备数据如下


create table if not exists test_user(
  `id` bigint(20) not null AUTO_INCREMENT comment '主键自增ID',
  `name` varchar(64) not null comment '姓名',
  `gender` integer not null comment '性别,1: 男, 2: 女',
  `country_code` integer not null comment '所属国家CODE',
  primary key (`id`)
) charset = 'utf8mb4' comment '测试表';

一张参照表

国家country_code
中国 100
美国 110
法国 120
雪国 其他

INSERT INTO `test_user` (`name`, `gender`, `country_code`)
VALUES 
  ('清风', 1, 100), 
  ('玄武', 2, 100), 
  ('Kobe', 1, 110), 
  ('John Snow', 1, 200), 
  ('Peut-être', 0, 120);

三、实战示例

3.1 使用case简单函数


select `id`, `name`, `gender`, 
(case `gender`
when 1 then ''
when 2 then ''
else '未知'
end) as '性别',
`country_code`
from test_user;


简单case查询结果.png

3.2 使用case搜索函数查询


select id, `name`, gender, 
(case 
when gender = 1 then ''
when gender = 2 then ''
else '未知' 
end) as '性别', 
country_code,
(case 
when country_code = 100 then '中国'
when country_code = 110 then '英国'
when country_code = 120 then '法国'
else '雪国' 
end) as '国籍'
from test_user;

 
搜索函数查询结果.png
posted @ 2020-04-29 17:04  雨中上人  阅读(1031)  评论(0编辑  收藏  举报