当前位置: 代码网 > it编程>数据库>Mysql > MySQL中NULLIF 、IFNULL、IF的用法和区别举例详解

MySQL中NULLIF 、IFNULL、IF的用法和区别举例详解

2024年05月26日 Mysql 我要评论
前言在 mysql 中,nullif、ifnull 和 if 是用于处理 null 值的三种不同的函数。1. nullif 函数nullif 函数用于比较两个表达式,如果它们的值相等,则返回 null

前言

在 mysql 中,nullif、ifnull 和 if 是用于处理 null 值的三种不同的函数。

1. nullif 函数

nullif 函数用于比较两个表达式,如果它们的值相等,则返回 null,否则返回第一个表达式的值。语法如下:

nullif(expr1, expr2)
  • expr1 和 expr2 是要比较的两个表达式。

示例:

select nullif(5, 5); -- 返回 null,因为两个值相等
select nullif(5, 10); -- 返回 5,因为两个值不相等

2. ifnull 函数

ifnull 函数用于判断第一个表达式是否为 null,如果是,则返回第二个表达式的值;否则,返回第一个表达式的值。语法如下:

ifnull(expr1, expr2)
  • expr1 是要判断是否为 null 的表达式。
  • expr2 是如果 expr1 为 null 时返回的值。

示例:

select ifnull(null, 'default_value'); -- 返回 'default_value',因为第一个表达式为 null
select ifnull('not_null_value', 'default_value'); -- 返回 'not_null_value',因为第一个表达式不为 null

3. if 函数

if 函数用于根据一个条件返回两个值中的一个。语法如下:

sqlif(condition, value_if_true, value_if_false)
  • condition 是一个条件表达式。
  • value_if_true 是如果条件为真时返回的值。
  • value_if_false 是如果条件为假时返回的值。

示例:

select if(5 > 3, 'true_value', 'false_value'); -- 返回 'true_value',因为条件为真
select if(5 < 3, 'true_value', 'false_value'); -- 返回 'false_value',因为条件为假

4. 区别总结

  • nullif 用于比较两个表达式,如果相等则返回 null。
  • ifnull 用于判断一个表达式是否为 null,是则返回指定的默认值。
  • if 用于根据条件返回两个不同的值。

附:mysql函数ifnull使用的注意事项

首先建一张简单的表,用于sql语句的操作

建表语句如下:

create table `student` (
`id`  int(11) not null auto_increment comment '主键' ,
`name`  varchar(8) character set utf8 collate utf8_general_ci not null default '' comment '名字' ,
`score`  int(4) not null default 0 comment '分数' ,
primary key (`id`)
);

手动创建数据如下:

现在开始正题:

a. ifnull的作用是什么?下面一个简单的sql和结果说明,如果ifnull(a,b),a接收的值为null,则返回b,否则返回a;

select ifnull(null,0);

b. 以下sql语句,大家可以预测下结果,按照ifnull函数的作用,应该返回0才对,可是结果并不是这样。

select ifnull(score,0) from student where id = 4;

返回结果,居然是null,与预期的结果0不一致。

c. 以下语句返回正确结果0;

select ifnull((select score from student where id = 4),0);

总结:使用b方式使用ifnull、sum函数等需要确保有查询记录,否则也将返回null值,当然也可使用c方式避免返回null值,避免程序中出现npe异常。

总结 

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

(0)

相关文章:

  • MySql 设置表格字段key中的值

    MySql 设置表格字段key中的值

    一.修改或创建表中key的值为mul1.在已经创建的表中修改字段key的值为mul修改表结构命令中添加index语句alter table *** add in... [阅读全文]
  • mysql如何判断同一字段是否有重复数据

    mysql判断同一字段是否有重复数据有时候我们呢会遇到业务问题:判断数据库字段是否含有重复数据?解决方式其实很简单,直接写sql语句:select 字段名 from 表名 grou…

    2024年05月26日 数据库
  • mysql导入导出数据的示例详解

    大家好,我是景天,本文主要介绍了mysql 导出和导入数据的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起…

    2024年05月26日 数据库
  • mysql如何按字段查询重复的数据

    mysql按字段查询重复的数据在 mysql 中,可以使用多种方法来查询按字段重复的数据。以下是一些最常用的方法:1. 使用 group by 和 having 子句select …

    2024年05月26日 数据库
  • mysql错误代码error2003的问题及解决

    mysql 错误代码error2003出现这种错误一般是mysql服务没有启动,在cmd中输入net start mysql就可以启动服务,但是输入之后出现说明没有 mysql这个…

    2024年05月26日 数据库
  • MySql中深度分页的问题处理

    MySql中深度分页的问题处理

    什么是深度分页?mysql深度分页的问题,就是比如我们需要所查询出的表数据量较大,需要进行查询结果返回集的后面部分,所出现的性能问题。比如说我们有一个一百万数据... [阅读全文]

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

发表评论

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