Case When Then End

前言:

CASE语句具有两种格式。1、简单CASE函数 2、CASE搜索函数。

场景:

SQL中使用增加一些判断呢???当然使用Case When Then End啦;

例子:

1、举个万年不变学生的问题。有张student表。字段:id、name、sex(0:男 1:女)、grade(成绩) 查询男学生大于80分女学生大于90的学生名单

CASE搜索函数:

SELECT * FROM `student ` where grade > (case when sex = 0 then 80 else 90 end) 

简单CASE函数:

SELECT * FROM `student ` where grade > (case sex when 0 then 80 else 90 end) 

如果超过两个条件呢?Case When Then End 

2、进入泰国的学校了哈。sex值增加个2代表人妖。-.-查询男学生大于80分女学生大于90的人妖大于60的学生名单。

CASE搜索函数:

SELECT * FROM `student ` where grade > (case when sex = 0 then 80 when sex = 1 then 90 when sex = 2 then 60 end) 

简单CASE函数:

SELECT * FROM `student ` where grade > (case sex when 0 then 80 when 1 then 90 when 2 then 60 end);

3、十分常用的场景:Code转换Value。一般我们落库的都是Code。比如上面的sex字段,0:男 1:女 2:人妖。现在我想要把对应的code显示对应的中文怎么办??

SELECT *,(case sex when 0 then '男' when 1 then '女' when 2 then '人妖' end) as '性别' FROM `student ` WHERE grade > (case when sex = 0 then 80 when sex = 1 then 90 when sex = 2 then 60 end);

总结:

1、简单CASE函数的写法相对比较简洁,

2、简单CASE函数功能方面会有些限制,无法写判定式,比如:CASE搜索函数可以自定义实现>(大于)、<(小于)、<>(不等于)、IN条件。而简单CASE函数仅仅是等于条件。

3、为了方便理解以上例子都是比较简单的,其实case里面也可以嵌套SQL等更为复杂的逻辑。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值