Mysql中的 IFNULL 函数的详解

Mysql中的 IFNULL 函数的详解Mysql 中的 IFNULL 函数的详解 嵌套查询等重点 如果第一个为空就执行第二个 ifnull

大家好,欢迎来到IT知识分享网。

目录

一、概念

二、语法

三、Demo 举例说明

创建表

加入数据

运行结果

3.1举例一

3.2举例二

3.3举例三

3.4举例四

注意事项


一、概念

在mysql中IFNULL() 函数用于判断第一个表达式是否为 NULL,如果第一个值不为NULL就执行第一个值。第一个值为 NULL 则返回第二个参数的值。

使用技巧见:3.2举例二  比较常用

二、语法

IFNULL(a, b)

三、Demo 举例说明

创建表

create table student_one( sno varchar(20) not null primary key, sname varchar(20) not null, ssex varchar(20) not null, sbirthday datetime, class varchar(20) )charset=utf8;

加入数据

insert into student_one values('1','陈奇','男','2000-11-02','1'); insert into student_one values('2','陈飞','男','1999-12-05','2'); insert into student_one values('3','周杰','女','1989-03-01','3'); insert into student_one values('4','昆凌','男','1989-04-15','4'); insert into student_one values('5','王丽','女','1999-05-16','5'); insert into student_one values('6','蔡蔡','男','2000-08-17','6');

运行结果

在这里插入图片描述

3.1举例一

第一个参数不为NULL,返回第一个参数,下面的代码中’hello’不为NULL,就返回的是’hello’

SELECT IFNULL('hello', 'world');

 运行结果
在这里插入图片描述

3.2.1举例二

从student_one表里面查询sno/sname字段,如果sno字段不为空,就返回sno字段,如果为空就返回sname字段。且取别名为‘字段结果’

SELECT IFNULL(sno,sname) AS '字段结果' FROM student_one

 运行结果
在这里插入图片描述

从student_one表里面class=4的行查询sno或者sname字段

SELECT IFNULL(sno,sname) FROM student_one WHERE class=4

 运行结果
在这里插入图片描述

3.2.2 业务场景下使用举例

或者 多表 字段 定义为某个字段 场景如:

ifnull( dga.code ,dr.code) agentCode, 含义说明:

总代code,经销商code 作为 别名agentCode的值。

使用场景:当经销商上级有总代理时 使用总代理的code,否则使用经销商的code的场景。

 select ds.type storeType, dr.type rtm, ifnull( dga.code ,dr.code) agentCode, ifnull(dga.agent_name_cn ,dr.name_cn) agentName, dr.code resellerCode, dr.name_cn resellerName, ds.code code FROM dg_store ds LEFT JOIN dg_store_type dst ON dst.id = ds.type LEFT JOIN dg_reseller dr ON dr.code = ds.reseller_code LEFT JOIN dg_general_agent dga ON dga.id = dr.agent_id

查询结果示例如下

Mysql中的 IFNULL 函数的详解

 

3.3举例三

从student_one表里面查询sno=10的class字段,如果表中没有class=10的字段,就会返回0

SELECT IFNULL((SELECT class FROM student_one WHERE sno = 10),0);

 运行结果
在这里插入图片描述

3.4举例四

从student_one表里面查询sno等于1的sname字段,如果为空,就从student_one表里面查询sno等于2的ssex字段

SELECT IFNULL((SELECT sname from student_one WHERE sno=1),(SELECT ssex from student_one WHERE sno=2));

 运行结果
在这里插入图片描述

从student_one表里面查询sno等于1的sname字段,如果为空,就从student_one表里面查询sno等于2的ssex字段。如果前面的都为空,就从student_one表里面查询sno等于2的sbirthday字段

SELECT IFNULL(IFNULL((SELECT sname from student_one WHERE sno=1),(SELECT ssex from student_one WHERE sno=2)),(SELECT sbirthday from student_one WHERE sno=2));

 运行结果
在这里插入图片描述

注意事项

1.查询语句要用括号括起来
2.一个IFNULL只能对应一条判断语句,
3.IFNULL仅能查询一个字段,否则会报错

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/113774.html

(0)
上一篇 2025-12-12 20:20
下一篇 2025-12-12 20:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信