当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


MySQL COALESCE()用法及代码示例


MySQL 中的 COALESCE() 函数用于返回指定系列表达式中的第一个非空值。如果此函数计算列表的所有值都为空,或者没有找到任何非空值,则返回 NULL。

用法

以下是在 MySQL 中使用 COALESCE() 函数的语法:

COALESCE(value1, value2, value3....., valueN);

在上面的语法中,我们可以看到该函数有很多参数,当它找到第一个非空值时,它返回那个非空值。有时列表的所有值都为空;在这种情况下,它返回 NULL。

COALESCE() 函数类似于 IF_ELSE 语句,如下所示:

IF (value1!= NULL) THEN
     result = value1;
  ELSIF (value2 != NULL) THEN
     result = value2;
  ELSE
     result = NULL;
  END IF;

参数说明

此函数只接受一个参数,即具有各种值的列表。

value1, value2,‌..,valueN:它指定列表的值以在输出中返回非空或空值。

通过下图我们可以更清楚地理解:

案例1:合并(空,空);

案例2:合并(0,NULL);

在这两种情况下,函数总是返回 NULL,因为它找不到任何非空值。

MySQL 版本支持

COALESCE() 函数可以支持以下 MySQL 版本:

  • MySQL 8.0
  • MySQL 5.7
  • MySQL 5.6
  • MySQL 5.5
  • MySQL 5.1
  • MySQL 5.0
  • MySQL 4.1
  • MySQL 4.0

让我们通过以下示例了解 MySQL COALESCE() 函数。我们可以直接在 SELECT 语句中使用 COALESCE() 函数。

例子1

SELECT COALESCE(NULL, 'A', 'B', NULL);

输出

当我们在列表上实现合并函数时,它会给出输出 "A",因为它是列表的第一个非空值。

例子2

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

输出

当我们在列表上实现合并函数时,它会给出输出 "Mango",因为它是列表的第一个非空值。

例子3

SELECT COALESCE(NULL, 1, 2, 'MySQL', NULL, 'JAVA', NULL);

输出

当我们在列表上实现合并函数时,它会返回数值 "1",因为它是列表的第一个非空值。

示例 4

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

输出

当我们在列表上实现合并函数时,它会返回 "javatpoint",因为它是列表的第一个非空值。

让我们在 MySQL 命令行 工具中查看以上所有示例:

MySQL COALESCE() Function

例 5

在这个例子中,我们将了解 COALESCE() 函数如何处理表数据。首先,使用以下语句创建表 "employee":

CREATE TABLE employee (
  Emp_id INT NOT NULL,
  Name VARCHAR(45) NULL,
  Designation VARCHAR(45) NULL,
  Phone VARCHAR(45) NULL,
  Mobile VARCHAR(45) NULL,
  Office VARCHAR(45) NULL,
  PRIMARY KEY (Emp_id)
);

接下来,使用 INSERT 语句将数据添加到表中,如下所示:

INSERT INTO employee(Emp_id, Name, Designation, Phone, Mobile, Office) 
VALUES (1, 'Peter', 'Engineer', '101-101-101', '111-111-111', '100-100-100'),
(2, 'Joseph', 'Developer', '201-201-201', '222-222-222', NULL),
(3, 'John', 'Leader', '301-301-301', NULL, '300-300-300'),
(4, 'Stephen', 'Scientist', '401-401-401', '444-444-444', '400-400-400'),
(5, 'Suzi', 'Carpenter', NULL, '555-555-555', '500-500-500'),
(6, 'Bob', 'Actor', '601-601-601', '666-666-666', '600-600-600'),
(7, 'Donald', 'Engineer', NULL, NULL, NULL);

执行以下查询以显示表数据:

SELECT * FROM employee;

我们将得到以下输出:

MySQL COALESCE() Function

现在,如果员工拥有所有联系人号码,则执行使用 COALESCE() 函数仅返回手机号码的语句:

SELECT Emp_id, Name, Designation, COALESCE(Mobile, Office, Phone) FROM employee;

它将给出以下输出:

MySQL COALESCE() Function

如果员工只有办公室或移动联系人,则执行此返回办公室号码的语句。当它没有找到办公室号码时,返回电话联系。

SELECT Emp_id, Name, Designation, Mobile, Office, Phone, COALESCE(Office, Mobile) FROM employee;

我们将得到如下输出:

MySQL COALESCE() Function

IFNULL() 与 COALESCE() 函数

这些函数之间的主要区别是:

IFNULL() COALESCE()
IFNULL() 函数只需要两个表达式。进行求值后,如果该表达式不为 NULL,则返回第一个表达式;否则,它返回第二个表达式。 COALESCE() 函数返回指定表达式系列中的第一个非空值。如果此函数计算列表的所有值都为空,或者没有找到任何非空值,则返回 NULL。




相关用法


注:本文由纯净天空筛选整理自 MySQL COALESCE() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。