一、CASE WHEN
简单case函数
CASE 测试表达式 WHEN 简单表达式1 THEN 结果表达式1 WHEN 简单表达式2 THEN 结果表达式2 … WHEN 简单表达式n THEN 结果表达式n [ ELSE 结果表达式n+1 ] END
讯享网
例子:
讯享网SELECT name,(CASE sex WHEN 0 THEN '女' ELSE '男' END) sex FROM score
结果: 
条件case函数
CASE WHEN 布尔表达式1 THEN 结果表达式1 WHEN 布尔表达式2 THEN 结果表达式2 … WHEN 布尔表达式n THEN 结果表达式n [ ELSE 结果表达式n+1 ] END
例子:根据上图
讯享网SELECT name,score,(CASE WHEN score>=90 THEN '优秀' WHEN score>=80 THEN '良好' WHEN score>=60 THEN '及格' ELSE '不及格' END) level FROM score
结果:
使用场景:
存在下表

先需要将其变换为下表形式


可以使用以下方式
select name, max(case when course='语文' then score else 0 end) as '语文', max(case when course='数学' then score else 0 end) as '数学', max(case when course='英语' then score else 0 end) as '英语', avg(score) as ‘平均成绩’ from test group by name
二、 IF
F函数也能通过判断条件来返回特定值,它的语法如下:
讯享网IF(expr,result_true,result_false)
expr是一个条件表达式,如果结果为true,则返回result_true,否则返回result_false。
例子:

select name,if (sex=1,'男','女') from test_user
结果: 
可以看出,在一些场景中,IF函数和CASE WHEN是有同样效果的,前者相对简单,后者能应对更复杂的判断。
另外,IF函数还可以和聚合函数结合,例如查询班级男生女生分别有多少人:
讯享网select count(if (sex=1,1,null)) '男生人数', count(if (sex=0,1,null)) '女生人数' from test_user
注意 count后面不需要加as 可以直接设置别名
三、IFNULL
在Java程序中调用sql语句时,如果返回结果是null,是非常容易引发一些意外情况的。
因此,我们希望在SQL中做一些处理,如果查询结果是null,就转换为特定的值,这就要用到Mysql中IFNULL函数。
IFNULL(name,0)
当name字段值为空时会被替换为0
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/10980.html