在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是平均成绩)
统计不同性别的学生人数
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
如果score大于等于90level为优秀,大于等于80小于90为良好,大于等于60小于80为及格,小于等于60为不及格
selectname,score,(casewhen score >= 90 then '优秀'when score >= 80 then '良好'when score >= 60 then '及格'else '不及格'end) levelfrom students
创建 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');
非常荣幸您能阅读到最后,希望文章中的内容能够帮助到您。
本博客内容均为博主原创,未经授权,请勿转载,谢谢!