目录
文章目录隐藏
  1. 1. IF() 函数
  2. 2. IFNULL() 函数
  3. 3. CASE 条件判断
  4. 4. 小结

本小节介绍 MySQL 提供的 IF、IFNULL、CASE 三种条件判断函数或结构,条件判断是为了实现控制流,在不同的条件下执行不同的流程。

1. IF() 函数

以 student 表为例,使用IF()函数对查询结果的字段判断:

SELECT name,IF(age > 17,'成年','未成年') AS age_group,id_number FROM student;

查询结果如下图:

IF 函数
如上图所示, IF(age > 17,'成年','未成年') 表示若 age 字段满足 age > 17 则展示为 成年,否则展示为 未成年。

2. IFNULL() 函数

为了演示方便,先向 teacher 表插入测试数据:

INSERT INTO teacher (name,age,id_number,email) VALUES
('Jack',30,'420117202006041111',NULL),
('Mary',31,'420117202006042222','mary@qq.com'),
('Timo',35,'420117202006043333',NULL),
('Faker',38,'420117202006044444','faker@qq.com'),
('Bob',35,'420117202006045555',NULL);

执行结果如下图:

IFNULL 函数

使用 IFNULL() 函数对查询结果的字段判断:

SELECT name,age,id_number,IFNULL(email,'default@qq.com') AS full_email FROM teacher;

执行结果如下图:

使用 IFNULL() 函数对查询结果的字段判断
如上图所示, IFNULL(email,'default@qq.com') 表示若 email 字段为 NULL ,则展示为 default @qq.com

3. CASE 条件判断

以 teacher 表为例,将指定英文名对应的中文名展示出来:

SELECT 
*,
CASE name
WHEN 'Tom'  THEN '汤姆'
WHEN 'Jack' THEN '杰克'
WHEN 'Mary' THEN '玛丽'
WHEN 'Timo' THEN '提莫'
WHEN 'Bob'  THEN '鲍勃'
WHEN 'Judy' THEN '朱蒂'
ELSE '未定义' END AS 'chinese_name'
FROM teacher;

执行结果如下图:

CASE 条件判断

如上图所示, 对 name 字段进行条件判断,并将判断后的列重命名为 chinese_name,若指定的 name 字段的值满足 WHEN 则展示相应的 THEN 后面的值。

4. 小结

本小节介绍了 IF、IFNULL、CASE 三种条件判断,并且可以对指定字段进行条件判断得到满足需求的结果,需要注意的是,实际业务中这些条件判断用的很少,建议这些数据的处理交给后端程序语言去处理,可以更好的维护和管理业务逻辑代码。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » 29. 条件判断函数

发表回复