MySQL 判断语句 条件函数 case when、if、ifnull
短信预约 -IT技能 免费直播动态提醒
在MySQL中,需要用到条件判断函数,例如 case when、if、ifnull。
一、方法分类
二、具体方法
(1)if
if(expr,result_true,result_false)
注意: 一个条件表达式两个结果
expr
:条件表达式;- 如果结果为true,则返回result_true,否则返回result_false。
(2)ifnull
ifnull(result,value)
注意: 如果查询结果是
null
,就转换为特定的值
result
:查询结果;value
:如果查询结果为null,则返回value,否则返回result。
(3)case when
casewhen 条件1 then 结果1when 条件2 then 结果2...when 条件n then 结果nelse 结果mend
注意: 在同一条判断语句中可以有一个到多个判断条件
else
:如果查询结果不满足when里面的任何一个条件,返回else后的结果m;- 判断条件按语句顺序执行,如果查询结果既符合条件1又符合条件2,那么只能得到结果1;
- case when 语句大多在select 查询列里面使用。
三、实例
students 表 (id表示主键,name是姓名,score是平均成绩)
id | name | gender | score |
---|---|---|---|
1 | 李明 | 男 | 99 |
2 | Null | 男 | 74 |
3 | 孙华 | 女 | 59 |
- 统计不同性别的学生人数
selectcount(if(gender='男',1,null)) as man_number,sum(if(gender='女',1,0)) as woman_numberfrom students#统计结果:男生人数2,女生人数1
- 如果name为null,用未知替换
selectid,ifnull(name,'未知') as name,gender,scorefrom students
id | name | gender | score |
---|---|---|---|
1 | 李明 | 男 | 99 |
2 | 未知 | 男 | 74 |
3 | 孙华 | 女 | 59 |
- 如果score大于等于90level为优秀,大于等于80小于90为良好,大于等于60小于80为及格,小于等于60为不及格
selectname,score,(case when score >= 90 then '优秀' when score >= 80 then '良好' when score >= 60 then '及格' else '不及格' end) levelfrom students
id | name | gender | score | level |
---|---|---|---|---|
1 | 李明 | 男 | 99 | 优秀 |
2 | 张三 | 男 | 74 | 及格 |
3 | 孙华 | 女 | 59 | 不及格 |
创建 students 表的代码
-- ------------------------------ Table structure for students-- ----------------------------DROP TABLE IF EXISTS `students`;CREATE TABLE `students` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '学生id', `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名', `gender` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别', `score` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '成绩', PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ------------------------------ Records of students-- ----------------------------INSERT INTO `students` VALUES (1, '李明', '男','99');INSERT INTO `students` VALUES (2, null, '男','67');INSERT INTO `students` VALUES (3, '孙华', '女','59');
非常荣幸您能阅读到最后,希望文章中的内容能够帮助到您。
本博客内容均为博主原创,未经授权,请勿转载,谢谢!
来源地址:https://blog.csdn.net/chengyj0505/article/details/128388505
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341