详解MySQL的NULLIF()函数:两个表达式是否相等

  • Post category:MySQL

MySQL的NULLIF()函数用于比较两个表达式,如果这两个表达式的值相等,则返回NULL,否则返回第一个表达式的值。在下面的内容中,我们将为您提供NULLIF()函数的使用方法及其实例。

语法

NULLIF(expr1,expr2)

参数说明

  • expr1: 要比较的第一个表达式。
  • expr2: 要比较的第二个表达式。

返回值

如果expr1expr2的值相等,则返回NULL,否则返回expr1的值。

使用方法

下面给出NULLIF()函数的使用方法:

SELECT NULLIF(expr1, expr2);

如果expr1等于expr2,则NULLIF()函数返回NULL,否则返回expr1

示例

我们来看两个使用NULLIF()函数的实例。

示例1

现在我们有一张用户表,其中包含了每个用户的手机号码和名字。假设我们要查询所有未填写名字的用户的手机号码。那么我们可以使用以下SQL语句:

SELECT phone_num FROM users WHERE NULLIF(name, '') IS NULL;

在上述语句中,我们使用了NULLIF()函数。如果用户名字为空,则NULLIF()函数返回NULL,因此WHERE子句的结果为TRUE,即该行数据被选中。最终结果就是所有未填写名字的用户的手机号码。

示例2

假设我们要查询所有没有出过差旅费用的员工姓名及对应部门。现在我们有两张表,一张表是员工信息表employee,包含员工姓名(name)和部门编号(dept_id);另一张是出差费用表travel,包含员工姓名(name)和出差费用(cost)。那么我们可以使用以下SQL语句:

SELECT employee.name, employee.dept_id
FROM employee
LEFT JOIN travel ON employee.name = travel.name
WHERE NULLIF(travel.cost, 0) IS NULL;

在上述语句中,我们使用了NULLIF()函数。如果某个员工出差费用为0,则NULLIF()函数返回NULL,因此WHERE子句的结果为TRUE,即该行数据被选中。最终结果就是所有没有出过差旅费用的员工姓名及对应部门。

总结

NULLIF()函数是MySQL中非常有用的函数,它可以比较两个表达式,并返回相应的值。使用该函数可以大大简化查询操作,提高代码的可读性。