当我们在查询数据的时候,我们可能希望对于一些数字的枚举值展示出其实际的文案值
比如:性别1我们想显示男,2我们想显示女。
一、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
作者:泥称已被栈用
链接:https://www.jianshu.com/p/1bfddf9fd91e