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等更为复杂的逻辑。

你可能感兴趣的:(DataBase)