当前位置:   article > 正文

MySQL 判断语句 条件函数 case when、if、ifnull_mysql判断语句

mysql判断语句

在MySQL中,需要用到条件判断函数,例如 case when、if、ifnull。

一、方法分类

条件函数 方法分类

二、具体方法

(1)if
if(expr,result_true,result_false)
  • 1

注意: 一个条件表达式两个结果

  • expr :条件表达式;
  • 如果结果为true,则返回result_true,否则返回result_false。
(2)ifnull
ifnull(result,value)
  • 1

注意: 如果查询结果是null,就转换为特定的值

  • result :查询结果;
  • value:如果查询结果为null,则返回value,否则返回result。
(3)case when
case
	when 条件1 then 结果1
	when 条件2 then 结果2
	...
	when 条件n then 结果n
	else 结果m
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

注意: 在同一条判断语句中可以有一个到多个判断条件

  • else:如果查询结果不满足when里面的任何一个条件,返回else后的结果m;
  • 判断条件按语句顺序执行,如果查询结果既符合条件1又符合条件2,那么只能得到结果1;
  • case when 语句大多在select 查询列里面使用。

三、实例

students 表 (id表示主键,name是姓名,score是平均成绩)

idnamegenderscore
1李明99
2Null74
3孙华59
  • 统计不同性别的学生人数
select
	count(if(gender='男',1,null)) as man_number,
	sum(if(gender='女',1,0)) as woman_number
from students
#统计结果:男生人数2,女生人数1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 如果name为null,用未知替换
select
	id,
	ifnull(name,'未知') as name,
	gender,
	score
from students
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
idnamegenderscore
1李明99
2未知74
3孙华59
  • 如果score大于等于90level为优秀,大于等于80小于90为良好,大于等于60小于80为及格,小于等于60为不及格
select
	name,
	score,
	(case
     	when score >= 90 then '优秀'
     	when score >= 80 then '良好'
     	when score >= 60 then '及格'
     	else '不及格'
     end) level
from students
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
idnamegenderscorelevel
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');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

非常荣幸您能阅读到最后,希望文章中的内容能够帮助到您。
本博客内容均为博主原创,未经授权,请勿转载,谢谢!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/485313
推荐阅读
相关标签
  

闽ICP备14008679号