淘先锋技术网

首页 1 2 3 4 5 6 7

目录

一、格式说明

1.简单函数

2.搜索函数

二、准备数据

三、场景使用

1.常规使用

2.搜索使用

3.特殊用法


一、格式说明

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;