条件判断函数
本小节介绍 MySQL 提供的 IF、IFNULL、CASE 三种条件判断函数或结构,条件判断是为了实现控制流,在不同的条件下执行不同的流程。
1. IF函数
以 student 表为例,使用 IF() 函数对查询结果的字段判断:
SELECT name,IF(age > ,'成年','未成年') AS age_group,id_number FROM student;
查询结果如下图:
Tips:如上图所示,
IF(age > 17,'成年','未成年')
表示若 age 字段满足age > 17
则展示为 成年,否则展示为 未成年。
2. IFNULL函数
为了演示方便,先向 teacher 表插入测试数据:
INSERT INTO teacher (name,age,id_number,email) VALUES('Jack',,'420117202006041111',NULL),('Mary',,'420117202006042222','mary@qq.com'),('Timo',,'420117202006043333',NULL),('Faker',,'420117202006044444','faker@qq.com'),('Bob',,'420117202006045555',NULL);
执行结果如下图:
使用 IFNULL()
函数对查询结果的字段判断:
SELECT name,age,id_number,IFNULL(email,'default@qq.com') AS full_email FROM teacher;
执行结果如下图:
Tips:如上图所示,
IFNULL(email,'default@qq.com')
表示若NULL
,则展示为default @qq.com
。
3. CASE条件判断
以 teacher 表为例,将指定英文名对应的中文名展示出来:
SELECT *,CASE nameWHEN 'Tom' THEN '汤姆'WHEN 'Jack' THEN '杰克'WHEN 'Mary' THEN '玛丽'WHEN 'Timo' THEN '提莫'WHEN 'Bob' THEN '鲍勃'WHEN 'Judy' THEN '朱蒂'ELSE '未定义' END AS 'chinese_name'FROM teacher;
执行结果如下图:
Tips:如上图所示, 对 name 字段进行条件判断,并将判断后的列重命名为 chinese_name,若指定的 name 字段的值满足 WHEN 则展示相应的 THEN 后面的值。
4. 小结
本小节介绍了 IF、IFNULL、CASE 三种条件判断,并且可以对指定字段进行条件判断得到满足需求的结果,需要注意的是,实际业务中这些条件判断用的很少,建议这些数据的处理交给后端程序语言去处理,可以更好的维护和管理业务逻辑代码。