MySQLIF和IFNULL用法示例详解

来源:这里教程网 时间:2026-03-31 12:13:21 作者:
一、IF 函数详解1. 基本语法2. 基础示例3. 实战示例示例1:判断成绩是否及格示例2:根据金额分类4. IF 的嵌套使用二、IFNULL 函数详解1. 基本语法2. 基础示例3. 实战示例示例1:处理 NULL 值示例2:计算时避免 NULL三、IF vs IFNULL 核心区别四、组合使用示例五、常见坑点总结1. NULL 参与计算问题2. IF 不是流程控制语句3. 嵌套过多影响可读性六、扩展:CASE WHEN(推荐)参考

在 MySQL 开发中,条件判断空值处理是非常常见的需求。其中,IFIFNULL 是最常用的两个函数。

一、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 核心区别

对比维度IFIFNULL功能条件判断空值处理参数个数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 用法示例详解的文章就介绍到这了,

相关推荐

热文推荐