MySQL 判断语句 条件函数 case when、if、ifnull
在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');
MySQL 判断语句 条件函数 case when、if、ifnull的更多相关文章
- puppet(3) 变量、数据类型、表达式、条件判断语句-if、case、selector、unless
puppet(4) 变量.数据类型.表达式.条件判断语句-if.case.selector语句 puppet变量: 1.名称必须以$开头:赋值使用=,支持追加赋值+=: 2.每个变量都有两种引用格式: ...
- hive中使用case、if:一个region统计业务(hive条件函数case、if、COALESCE语法介绍:CONDITIONAL FUNCTIONS IN HIVE)
前言:Hive ql自己设计总结 1,遇到复杂的查询情况,就分步处理.将一个复杂的逻辑,分成几个简单子步骤处理. 2,但能合在一起的,尽量和在一起的.比如同级别的多个concat函数合并一个selec ...
- MYSQL 常用语句与函数命令
进图数据库mysql –u root –p 输入密码后进入 查看数据库: show databases; 进入数据库:use dvwa; 查看该数据库的表:show tables; 查操作: sele ...
- Mysql常用语句与函数(待续)
-- 查询语句select class from stu_info where sid=1000000102;select * from stu_info t where t.age=88; -- t ...
- mysql常用语句和函数
mysql语句如果长期不写,就会忘掉,所以要时常复习,温故而知新. 1.select length("中国人"),select char_length("中国人" ...
- hive学习7(条件函数case)
case函数 语法: CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END 说明:如果a为TRUE,则返回b:如果c为TRUE,则返回d:否则返回e 实例 ...
- [Mysql 查询语句]——集合函数
count() 统计记录条数 select count(*) from student; +----------+ | count(*) | +----------+ | +----------+ s ...
- mysql 判断指定条件数据存不存在,不存在则插入
折腾了半天终于把这个给折腾顺了,但是后来发现用不了竟然...悲剧啊,但是还是要记录下加深记忆 insert into table1 (field1, field2,field3) select ?fi ...
- Mariadb MySQL逻辑条件判断相关语句、函数使用举例介绍
MySQL逻辑条件判断相关语句.函数使用举例介绍 By:授客 QQ:1033553122 1. IFNULL函数介绍 IFNULL(expr1, expr2) 说明:假如expr1 不为NULL,则 ...
随机推荐
- LcdToos设置“自动播放”和“上电自动开机”的作用
"自动播放"功能,常用于屏演示或者老化功能,使能后,按开关点亮屏,PX01会自动按"画面定制"栏中进行自动顺序播放:开启方法如下: 打开相应的点屏工程,在&qu ...
- C++11绑定器bind及function机制
前言 之前在学muduo网络库时,看到陈硕以基于对象编程的方式,大量使用boost库中的bind和function机制,如今,这些概念都已引入至C++11,包含在头文件<functional&g ...
- 基于 Docker 构建轻量级 CI 系统:Gitea 与 Woodpecker CI 集成
WoodpeckerCI 是一个由社区维护的 DroneCI 分支,使用 Apache License 2.0 许可证发布.社区版进一步扩展了 pipeline 的功能特性.支持对文件路径设置 pip ...
- Jenkins用户管理
用户注册和权限管理介绍. 1. 用户注册 进入[系统管理]-[全局安全配置],进行配置: 1.1 安全域 选择[Jenkins专有用户数据库],勾选[允许用户注册],随后[保存] 1.2 用户注册 在 ...
- 万万没想到,除了香农计划,Python3.11竟还有这么多性能提升!
众所周知,Python 3.11 版本带来了较大的性能提升,但是,它具体在哪些方面上得到了优化呢?除了著名的"香农计划"外,它还包含哪些与性能相关的优化呢?本文将带你一探究竟! 作 ...
- 基于python的数学建模---运输问题
代码 import pulp import numpy as np from pprint import pprint def transport_problem(costs, x_max, y_ma ...
- 「Goravel 上新」用户授权模块,让你简单的对非法用户 Say No!
首先,让我们定义一个规则:用户只能访问自己创建的文章. facades.Gate.Define("update-post", func(ctx context.Context, a ...
- 【基础语法规范】【函数式编程、字符串分割】BC6:输出输入的第二个整数
思路:数组or字符串split分割 一.Scala 方法1:Int数组[不行] import scala.io.StdIn object Main{ def main(args:Array[Strin ...
- 【Java SE进阶】Day09 字节流、字符流、I/O操作、属性集
一.I/O概述 1.输入输出 输入:硬盘-->内存 输出:内存-->内存 2.流 字节流:一个字节等于8位 字符流:一个字符=2个字节 二.字节流 1.概述 以字节的方式读取/传输 可以读 ...
- 【Java SE进阶】Day04 Map、Debug
一.Map集合 1.概述 映射 /双列集合 集合分为Collection(存储一个元素 )和Map(存储一对元素) 键不能重复,值可以重复 2.常用子类 HashMap 哈希表存储数据 元素存取数据不 ...