MySQL 如何在结果为空时返回NULL

MySQL 如何在结果为空时返回NULL?

MySQL是一种常用的关系型数据库管理系统,它提供了许多功能和方法来查询和操作数据。在编写MySQL查询时,我们经常会碰到一个问题:当查询结果为空时,返回什么?

考虑下面这个表:

CREATE TABLE `employees` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `department` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
SQL

它包含了员工信息,我们想查询某个部门的所有员工名字:

SELECT `name` FROM `employees` WHERE `department`='Sales';
SQL

但是如果这个部门没有员工,查询结果将为空。这时我们想返回一个NULL值,怎样才能实现呢?

阅读更多:MySQL 教程

IFNULL()函数

MySQL提供了IFNULL()函数,它可以在结果为空时返回指定的值,例如:

SELECT IFNULL(`name`, 'NULL') FROM `employees` WHERE `department`='Marketing';
SQL

如果Marketing部门没有员工,结果将显示”NULL”。

但是我们这里要返回NULL值本身,该怎么办?

NULLIF()函数

MySQL还提供了NULLIF()函数,它可以在两个值相等时返回NULL。我们可以结合IFNULL()和NULLIF()函数,构建一个查询:

SELECT IFNULL(NULLIF(`name`, ''), NULL) FROM `employees` WHERE `department`='Engineering';
SQL

如果Engineering部门没有员工,结果将返回NULL。

总结

在MySQL查询中,当结果为空时我们可以使用IFNULL()和NULLIF()函数来返回指定的值或NULL。他们的语法如下:

IFNULL(expr1, expr2)
NULLIF(expr1, expr2)
SQL

其中,expr1和expr2是任意表达式,如果expr1为空,则IFNULL()函数返回expr2,NULLIF()函数返回NULL。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册