MySQL COALESCE 函数从一系列表达式中返回第一个非 NULL 值,如果没有非 NULL 值则返回 NULL。
下面我们通过一个示例来展示如何使用此 Coalesce 函数,其背后的语法如下所示:
COALESCE (exp1, exp2, ......, expN)
MySQL COALESCE 函数示例
在此示例中,我们展示了如何将此 Coalesce 函数应用于字符串数据。第一个语句返回 Cherry,因为该函数返回第一个非 NULL 值。第二个语句返回 Apple,因为第一个值为 NULL。
SELECT COALESCE('Cherry', 'Apple', 'Orange');
SELECT COALESCE(NULL, 'Apple', 'Orange');
SELECT COALESCE('Cherry', NULL, 'Orange');

第二个语句返回 Orange,因为前两个参数或值均为 NULL。
SELECT COALESCE('Cherry', 'Apple', NULL);
SELECT COALESCE(NULL, NULL, 'Orange');
SELECT COALESCE(NULL, 'Orange', NULL);

此示例展示了 Coalesce 函数在数值上的工作功能。这与上面的示例相同。
SELECT COALESCE(15, NULL, NULL);
SELECT COALESCE(NULL, 25, NULL);
SELECT COALESCE(NULL, NULL, 35);

COALESCE 示例 2
在此示例中,我们展示了如何将此函数应用于表数据。为进行演示,我们将使用 MySQL 员工详细信息表,该表包含以下记录。
在此示例中,我们使用此 MySQL Coalesce 函数查找员工的联系电话。
- 如果员工有私人电话号码,则返回该电话号码。
- 如果员工没有私人电话号码,但有办公电话号码,则返回该办公电话号码。
- 如果员工没有私人电话号码或办公电话,则函数会查找手机号码并返回该号码。
- 如果用户有所有号码,则 Coalesce 函数返回私人电话号码。
SELECT
CustomerKey,
CONCAT(FirstName, ' ', LastName) AS FullName,
EmailAddress,
Phone,
Office,
Mobile,
COALESCE(Phone, Office, Mobile)
FROM EmployeeDetails;

在此示例中,我们使用了办公电话和手机号码。
SELECT
CustomerKey,
CONCAT(FirstName, ' ', LastName) AS FullName,
EmailAddress,
Phone,
Office,
Mobile,
COALESCE(Office, Mobile)
FROM EmployeeDetails;
