MySQL IF 和 IFNULL 用法示例详解
作者:程序员烟花
MySQL中的条件判断和空值处理是开发中的常见需求,本文详细解析了IF和IFNULL两个核心函数,文章通过多个实战示例展示了它们的用法,感兴趣的朋友跟随小编一起看看吧
在 MySQL 开发中,条件判断和空值处理是非常常见的需求。其中,IF 和 IFNULL 是最常用的两个函数。
一、IF 函数详解
1. 基本语法
IF(condition, value_if_true, value_if_false)
含义:
如果 condition 为真,返回 value_if_true,否则返回 value_if_false。
2. 基础示例
SELECT IF(1 > 0, 'yes', 'no');
结果:
yes
3. 实战示例
示例1:判断成绩是否及格
SELECT name,
score,
IF(score >= 60, '及格', '不及格') AS result
FROM student;
示例2:根据金额分类
SELECT amount,
IF(amount > 1000, '高消费', '普通消费') AS level
FROM orders;4. IF 的嵌套使用
SELECT score,
IF(score >= 90, '优秀',
IF(score >= 60, '及格', '不及格')) AS level
FROM student;
说明:
IF 可以嵌套实现多条件判断。
二、IFNULL 函数详解
1. 基本语法
IFNULL(expr1, expr2)
含义:
如果 expr1 不为 NULL,返回 expr1,否则返回 expr2。
2. 基础示例
SELECT IFNULL(NULL, '默认值');
结果:
默认值
3. 实战示例
示例1:处理 NULL 值
SELECT name,
IFNULL(phone, '未填写') AS phone
FROM user;
示例2:计算时避免 NULL
SELECT price * IFNULL(quantity, 0) AS total FROM orders;
说明:
防止 NULL 参与计算导致结果为 NULL。
三、IF vs IFNULL 核心区别
| 对比维度 | IF | IFNULL |
|---|---|---|
| 功能 | 条件判断 | 空值处理 |
| 参数个数 | 3 个 | 2 个 |
| 判断方式 | 任意条件 | 是否为 NULL |
| 使用场景 | 分支逻辑 | 默认值处理 |
IF 用来“做判断”,IFNULL 用来“补空值”。
四、组合使用示例
在实际开发中,经常会组合使用:
SELECT name,
IF(IFNULL(score, 0) >= 60, '及格', '不及格') AS result
FROM student;
逻辑:
- 先用 IFNULL 处理空值
- 再用 IF 判断
五、常见坑点总结
1. NULL 参与计算问题
SELECT 1 + NULL;
结果:
NULL
解决:
SELECT 1 + IFNULL(NULL, 0);
2. IF 不是流程控制语句
注意:
- IF 是函数(表达式)
- 不是存储过程里的 IF 语句
3. 嵌套过多影响可读性
建议:
多条件优先使用 CASE WHEN。
六、扩展:CASE WHEN(推荐)
SELECT score,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END AS level
FROM student;
优点:
- 可读性更强
- 更适合复杂逻辑
参考
https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#function_if
https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#function_ifnull
到此这篇关于MySQL IF 和 IFNULL 用法示例详解的文章就介绍到这了,更多相关mysql if和ifnull用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- MYSQL中IFNULL和NULLIF函数的区别小结
- Mysql中isnull,ifnull,nullif的用法及语义详解
- Mysql中 IFNULL函数的使用详解
- MySQL中NULLIF 、IFNULL、IF的用法和区别举例详解
- MySQL语句之条件语句IFNULL和COALESCE的区别说明
- Mysql中IFNULL函数举例详解
- MySql中的IFNULL、NULLIF和ISNULL用法详解
- MySQL ifnull()函数的具体使用
- MySQL流程控制IF()、IFNULL()、NULLIF()、ISNULL()函数的使用
- MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
