您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

条件判断函数

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


联系我
置顶