在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

case
when 条件1 then 结果1
when 条件2 then 结果2
...
when 条件n then 结果n
else 结果m
end

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

  • 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
  • 统计不同性别的学生人数
select
count(if(gender='男',1,null)) as man_number,
sum(if(gender='女',1,0)) as woman_number
from students
#统计结果:男生人数2,女生人数1
  • 如果name为null,用未知替换
select
id,
ifnull(name,'未知') as name,
gender,
score
from students
id name gender score
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
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');

最新文章

  1. Struts的拦截器
  2. 初始webservice
  3. C#高级编程笔记 2016年10月26日 MVC入门 Controller
  4. SQL Server 通过备份文件初始化复制
  5. Oracle RAC客户端tnsnames.ora相关配置及测试
  6. qq
  7. 0525 Scrum 项目7.0
  8. C++分类
  9. 关于js的call()和apply()两个函数的一点个人看法
  10. [转]ODBC连接ORACLE数据库的设置
  11. MYSQL 基础操作
  12. 工具批处理Demo
  13. redis之lua脚本
  14. 百度地图SDk 使用
  15. 使用CMD命令编译和运行Java程序
  16. Python--可迭代对象,迭代器,生成器
  17. ORACLE视图简单创建和使用
  18. IntelliJ IDEA使用教程(很全)
  19. Zabbix 3.4.2 install && Configuration
  20. shell脚本中出现图形化界面

热门文章

  1. etcd实现分布式锁
  2. vue中push()和splice()的使用方法
  3. Bob 的生存概率问题
  4. 开源网络协议栈onps诞生记
  5. MYSQL ---mysql 数据导入与导出
  6. 元数据性能大比拼:HDFS vs S3 vs JuiceFS
  7. php 高并发
  8. WSL优化之SSH远程登录篇
  9. Linux 基础-查看 cpu、内存和环境等信息
  10. Python: 你所不知道的星号 * 用法