简介

nullififnull是数据库中常用的两个函数。不同的数据库可能会略微有差异。

详解

NULLIF

NULLIF(expr1,expr2)

NULLIF接受两个参数,如果两个参数相等则返回NULL,不相等则返回第一个参数。

实例

运行环境:MYSQL

--返回 NULL
SELECT NULLIF('culturesun.site','culturesun.site');
--返回 culturesun.site
SELECT NULLIF('culturesun.site',NULL);
--返回 NULL ,因为第一个参数是 NULL
SELECT NULLIF(NULL,'culturesun.site');

注意第三句sql,第一个接受参数是NULL,在SQL server数据库中第一个参数不允许NULL

IFNULL

IFNULL(expr1,expr2)

IFNULL接受两个参数,如果第一个参数为NULL,则返回第二个参数,否则返回第一个参数。

实例

运行环境:MYSQL

--返回  culturesun.site
SELECT IFNULL('culturesun.site',NULL);
--返回  culturesun.site
SELECT IFNULL(NULL,'culturesun.site');
--返回  NULL(返回的是第二个参数)
SELECT IFNULL(NULL,NULL);

注意SQL server中没有IFNULL,而是ISNULL

特殊使用

测试表:testtable ,有个名为 id 的列,类型是varchar
数据如下:
2023-09-20T08:22:53.png

IFNULL配合数据表的列使用会有意想不到结果,场景如下:
判断某列是否为NULL,如果是就返回culturesun,不是就返回列值拼接culturesun字符串。

实现sql如下:

SELECT IFNULL(CONCAT(id,'culturesun'),'culturesun') FROM `testtable`;

查询结果:
2023-09-20T08:28:18.png

可知如果IFNULL第一个参数是一个表的列,即使是列值与字符串拼接,也依旧是判断列值是否为空。