一、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