当前位置: 代码网 > it编程>数据库>Mysql > MySQL IF 和 IFNULL 用法示例详解

MySQL IF 和 IFNULL 用法示例详解

2026年03月31日 Mysql 我要评论
在 mysql 开发中,条件判断和空值处理是非常常见的需求。其中,if 和 ifnull 是最常用的两个函数。一、if 函数详解1. 基本语法if(condition, value_if_true,

在 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 不是流程控制语句

注意:

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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com