条件判断函数
本小节介绍 提供的 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')
表示若 email
字段为 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 三种,并且可以对指定字段进行得到满足需求的结果,需要注意的是,实际业务中这些用的很少,建议这些数据的处理交给后端程序语言去处理,可以更好的维护和管理业务逻辑。