MySQL COALESCE 函数

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');
COALESCE Function Example 1

第二个语句返回 Orange,因为前两个参数或值均为 NULL。

SELECT COALESCE('Cherry', 'Apple', NULL);

SELECT COALESCE(NULL, NULL, 'Orange');

SELECT COALESCE(NULL, 'Orange', NULL);
COALESCE Example 2

此示例展示了 Coalesce 函数在数值上的工作功能。这与上面的示例相同。

SELECT COALESCE(15, NULL, NULL);

SELECT COALESCE(NULL, 25, NULL);

SELECT COALESCE(NULL, NULL, 35);
Example 3

COALESCE 示例 2

在此示例中,我们展示了如何将此函数应用于表数据。为进行演示,我们将使用 MySQL 员工详细信息表,该表包含以下记录。

在此示例中,我们使用此 MySQL Coalesce 函数查找员工的联系电话。

  1. 如果员工有私人电话号码,则返回该电话号码。
  2. 如果员工没有私人电话号码,但有办公电话号码,则返回该办公电话号码。
  3. 如果员工没有私人电话号码或办公电话,则函数会查找手机号码并返回该号码。
  4. 如果用户有所有号码,则 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;
COALESCE Example on Phone Numbers