目录
一、格式说明
1.简单函数
case 列名
when 条件值1 then 选项1
when 条件值2 then 选项2...
else 默认值 end
2.搜索函数
case
when 列名= 条件值1 then 选项1
when 列名=条件值2 then 选项2...
else 默认值 end
二、准备数据
#创建用户表
CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',
`name` varchar(60) NOT NULL COMMENT '姓名',
`age` int(11) NOT NULL COMMENT '年龄',
`sex` int(1) NOT NULL COMMENT '性别(1是男 0是女 )',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
#插入数据
INSERT INTO `study`.`user` (`id`, `name`, `age`, `sex`) VALUES (1, '小明', 20, 1);
INSERT INTO `study`.`user` (`id`, `name`, `age`, `sex`) VALUES (2, '小红', 19, 0);
INSERT INTO `study`.`user` (`id`, `name`, `age`, `sex`) VALUES (3, '小蓝', 17, 1);
三、场景使用
1.常规使用
select case sex
when 1 then '男'
when 0 then '女'
else '未知'
end as '性别'
from user;
2.搜索使用
select case
when sex = 1 and age>=18 then '成年男性'
when sex = 0 and age>=18 then '成年女性'
else '未成年'
end as '成年情况'
from user;
3.特殊用法
①.用于搜索条件
select name,age,sex from user
where sex =
case age when 20 then 1
when 19 then 0 end;
②.用于排序情况
select name,age,sex from user
order by
case when 18=20 then sex end desc,
case when 18=18 then age end desc;