MySQL之CASE WHEN用法

目录

一、格式说明

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;

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值