Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql if和ifnull用法

MySQL IF 和 IFNULL 用法示例详解

作者:程序员烟花

MySQL中的条件判断和空值处理是开发中的常见需求,本文详细解析了IF和IFNULL两个核心函数,文章通过多个实战示例展示了它们的用法,感兴趣的朋友跟随小编一起看看吧

在 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;

逻辑:

  1. 先用 IFNULL 处理空值
  2. 再用 IF 判断

五、常见坑点总结

1. NULL 参与计算问题

SELECT 1 + NULL;

结果:

NULL

解决:

SELECT 1 + IFNULL(NULL, 0);

2. 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用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文