MySQL IFNULL 用于将 NULL 值替换为自定义值或自定义文本。此操作符非常适合用自定义信息替换令人烦恼的 NULL 值。此 IFNULL 的基本语法如下:
SELECT IFNULL(expression1, expression2)
此 IFNULL 操作符接受两个参数。如果第一个值(表达式 1)非 NULL,则返回第一个值。如果表达式 1 的值为 NULL,则返回表达式 2。
MySQL IFNULL 操作符示例
在此示例查询中,我们向您展示了简单的 IFNULL 操作符示例。在此,第一个语句返回 10,因为 10 不是 NULL。第二个语句返回 5,因为第一个参数是 NULL。在最后一个语句中,1/0 是 NULL,因此将返回 5 和 Wrong。
SELECT IFNULL(10, 5);
SELECT IFNULL(NULL, 5);
SELECT IFNULL(1/0, 5), IFNULL(1/0, 'Wrong');

IFNULL 示例 2
我们正在使用此员工详细信息表来演示 IFNULL 操作符。下面的屏幕截图显示了此 MySQL 表中的数据。

在此示例查询中,我们在中间名上使用了 IFNULL 操作符。如果中间名为 NULL,则将其替换为“无中间名”作为 Name1,将“Tutorial Gateway”作为 Name2。否则,它将返回中间名。
SELECT
CustomerKey,
FirstName,
IFNULL(MiddleName, 'No Middle Name') AS Name1,
IFNULL(MiddleName, 'Tutorial gateway') AS Name2,
LastName,
YearlyIncome,
Phone,
Office,
Mobile
FROM EmployeeDetails;

这次,我们在中间名、电话、办公室和中间列上使用了 MySQL IFNULL。如果电话号码中有任何 NULL 值,则将其替换为 0。
SELECT
CustomerKey,
FirstName,
IFNULL(MiddleName, 'Tutorial gateway') AS MName,
LastName,
YearlyIncome,
IFNULL(Phone, 0),
IFNULL(Office, 0),
IFNULL(Mobile, 0)
FROM EmployeeDetails;

到目前为止,我们一直使用它将列 NULL 值替换为自定义文本。但是,您也可以使用另一个列值作为替换值。在此示例中,(Phone, Office) 表示,如果 Phone 列中有任何 NULL,则它们将被相应的办公室号码替换。
SELECT
CustomerKey,
FirstName,
IFNULL(MiddleName, 'Tutorial gateway') AS MName,
LastName,
YearlyIncome,
IFNULL(Phone, Office),
IFNULL(Office, Phone),
IFNULL(Mobile, Phone)
FROM EmployeeDetails;
