当前位置: 代码网 > it编程>数据库>Mysql > Mysql中isnull,ifnull,nullif的用法及语义详解

Mysql中isnull,ifnull,nullif的用法及语义详解

2025年06月24日 Mysql 我要评论
mysql中isnull,ifnull,nullif的用法在 mysql 中,isnull、ifnull 和 nullif 都与空值(null)的判断或处理有关,但它们的用途和语义不同1. isnul

mysql中isnull,ifnull,nullif的用法

在 mysql 中,isnull、ifnull 和 nullif 都与空值(null)的判断或处理有关,但它们的用途和语义不同

1. isnull(expr) → 判断是否为 null

功能:返回 1(真)如果表达式为 null,否则返回 0(假)
示例

select isnull(null);       -- 结果:1
select isnull(123);        -- 结果:0
select isnull(name) from users;

2. ifnull(expr1, expr2) → null 值替换

功能:如果 expr1 是 null,返回 expr2;否则返回 expr1。
常用于:空值替换为默认值
示例

select ifnull(null, 'default');     -- 结果:'default'
select ifnull('hello', 'default');  -- 结果:'hello'
-- 示例:替换用户昵称为空时的默认名称
select ifnull(nickname, '匿名') as display_name from users;

等价于:

case when nickname is null then '匿名' else nickname end

3. nullif(expr1, expr2) → 相等则返回 null

功能:如果 expr1 = expr2,返回 null;否则返回 expr1
常用于:避免除零错误,或“两个值相同视为无效”的判断
示例

select nullif(5, 5);   -- 结果:null
select nullif(5, 3);   -- 结果:5
-- 示例:除法避免除以 0
select 10 / nullif(denominator, 0) from numbers;

总结

函数名主要用途示例结果
isnull(x)判断是否为 nullisnull(null)1
ifnull(x, y)如果 x 是 null,返回 yifnull(null, 'n/a')‘n/a’
nullif(x, y)如果 x = y,返回 nullnullif(5, 5)null

补充:mysql中if()、ifnull()、nullif()、isnull()函数的使用

mysql中if()、ifnull()、nullif()、isnull()函数的使用

在mysql中可以使用if()、ifnull()、nullif()、isnull()函数进行流程的控制。

1、if()函数的使用

if(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值。

select if(true,'a','b');    -- 输出结果:a
select if(false,'a','b');   -- 输出结果:b

2、ifnull()函数的使用

ifnull(expr1,expr2),如果expr1的值为null,则返回expr2的值,如果expr1的值不为null,则返回expr1的值。

select ifnull(null,'b');    -- 输出结果:b
select ifnull('hello','b'); -- 输出结果:hello

3、nullif()函数的使用

nullif(expr1,expr2),如果expr1=expr2成立,那么返回值为null,否则返回值为expr1的值。

select nullif('a','a');     -- 输出结果:null
select nullif('a','b');     -- 输出结果:a

4、isnull()函数的使用

isnull(expr),如果expr的值为null,则返回1,如果expr1的值不为null,则返回0。

select isnull(null);        -- 输出结果:1
select isnull('hello');     -- 输出结果:0

到此这篇关于mysql中isnull,ifnull,nullif的用法的文章就介绍到这了,更多相关mysql isnull,ifnull,nullif用法内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

  • MySQL索引优化之回表

    MySQL索引优化之回表

    在mysql数据库中,回表是一个与索引查询相关的重要概念,通常指当使用索引查询数据时,仅通过索引无法获取所需的全部字段信息,需要再次访问数据表(聚簇索引)以获取... [阅读全文]
  • MySQL联合索引的使用解读

    MySQL联合索引的使用解读

    1、背景联合索引就是给多个列建一个索引,使用联合索引时要满足最左匹配原则,不然会索引失效,本篇文章就通过explain执行计划研究一下联合索引,能让我们避免使用... [阅读全文]
  • Mysql 数据库中设备实时状态表水平分表

    Mysql 数据库中设备实时状态表水平分表

    一、 需求概述在使用 mysql 数据库存储设备上报日志时,存在一张设备实时状态表,随着时间推移,数据量变得十分庞大。为了更好地管理和查询数据,提高数据库性能,... [阅读全文]
  • MySQL性能指标解读与监控的具体方法

    MySQL性能指标解读与监控的具体方法

    引言在数据库的世界里,mysql凭借其开源、高效、稳定的特性,成为众多企业和开发者的首选。然而,随着数据量的增长和业务复杂度的提升,mysql的性能问题逐渐凸显... [阅读全文]
  • 解决CentOS7下yum失效问题

    解决CentOS7下yum失效问题

    背景centos7已经停止支持,yum源也失效了 ,但是我们服务用的都是centos7 ,也不会轻易升级。so 我们只能找找替代方案,很幸运发现阿里云的yum源... [阅读全文]
  • Mysql 多表联合更新的项目实践

    Mysql 多表联合更新的项目实践

    mysql 可以基于多表查询更新数据。对于多表的 update 操作需要慎重,建议在更新前,先使用 select 语句查询验证更新的数据与自己期望的是否一致。下... [阅读全文]

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

发表评论

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