MariaDB COALESCE() 函数的基础用法与实例
本文将介绍一个常用的控制流函数,COALESCE()
,它用于返回第一个非空的参数。
发布于
MariaDB 是一个开源的关系型数据库管理系统,它是 MySQL 的一个分支,兼容 MySQL 的语法和功能。MariaDB 提供了许多内置的函数,用于对数据进行各种操作和处理。本文将介绍一个常用的控制流函数,COALESCE()
,它用于返回第一个非空的参数。
语法
COALESCE()
函数的语法如下:
COALESCE(value1, value2, ..., valueN)
其中,value1, value2, ..., valueN
是要检查的参数,可以是任意类型的表达式,可以是常量,变量,列名,或者子查询等。参数的个数可以是任意多,但至少要有一个。如果所有的参数都为 NULL
,则函数返回 NULL
。
COALESCE()
函数返回的是第一个非空的参数的值,如果没有找到非空的参数,则返回 NULL
。COALESCE()
函数的返回值的类型取决于参数的类型,一般遵循以下规则:
- 如果所有的参数都是数值类型,则返回值的类型是最宽的数值类型,例如,如果参数中有
DECIMAL
类型,则返回值的类型是DECIMAL
。 - 如果所有的参数都是日期和时间类型,则返回值的类型是最宽的日期和时间类型,例如,如果参数中有
DATETIME
类型,则返回值的类型是DATETIME
。 - 如果所有的参数都是字符串类型,则返回值的类型是最宽的字符串类型,例如,如果参数中有
TEXT
类型,则返回值的类型是TEXT
。 - 如果参数中有不同类型的参数,则返回值的类型是根据参数的类型进行隐式转换后的类型,例如,如果参数中有
INT
类型和VARCHAR
类型,则返回值的类型是VARCHAR
。
实例
下面给出一些使用 COALESCE()
函数的实例,以及相应的代码和输出结果。
返回一个常量列表中的第一个非空值
SELECT COALESCE(NULL, 1, 2, 3);
+-------------------------+
| COALESCE(NULL, 1, 2, 3) |
+-------------------------+
| 1 |
+-------------------------+
返回一个变量列表中的第一个非空值
SET @a = NULL;
SET @b = 10;
SET @c = 20;
SELECT COALESCE(@a, @b, @c);
+----------------------+
| COALESCE(@a, @b, @c) |
+----------------------+
| 10 |
+----------------------+
返回一个列名列表中的第一个非空值
CREATE TABLE test (
id INT,
name VARCHAR(20),
age INT
);
INSERT INTO test VALUES (1, 'Alice', 25), (2, NULL, 30), (3, 'Bob', NULL);
SELECT id, COALESCE(name, age, 'Unknown') FROM test;
+------+--------------------------------+
| id | COALESCE(name, age, 'Unknown') |
+------+--------------------------------+
| 1 | Alice |
| 2 | 30 |
| 3 | Bob |
+------+--------------------------------+
返回一个子查询中的第一个非空值
SELECT COALESCE(
(SELECT name FROM test WHERE id = 1),
(SELECT name FROM test WHERE id = 2),
(SELECT name FROM test WHERE id = 3)
);
+------------------------------------------------------------------------------------------------------------------------------------+
| COALESCE(
(SELECT name FROM test WHERE id = 1),
(SELECT name FROM test WHERE id = 2),
(SELECT name FROM test WHERE id = 3)
) |
+------------------------------------------------------------------------------------------------------------------------------------+
| Alice |
+------------------------------------------------------------------------------------------------------------------------------------+
返回一个不同类型的参数列表中的第一个非空值
SELECT COALESCE(NULL, 'Hello', 123, TRUE);
+------------------------------------+
| COALESCE(NULL, 'Hello', 123, TRUE) |
+------------------------------------+
| Hello |
+------------------------------------+
相关函数
除了 COALESCE()
函数外,MariaDB 还提供了一些其他的控制流函数,用于根据不同的条件返回不同的值。下面列举了一些常用的控制流函数,并给出了简单的介绍和举例。
IF()
函数:根据一个布尔表达式的值,返回两个参数中的一个。IFNULL()
函数:如果第一个参数为NULL
,则返回第二个参数,否则返回第一个参数。NULLIF()
函数:如果两个参数相等,则返回NULL
,否则返回第一个参数。CASE
表达式:根据一个表达式的值或者一系列的条件,返回不同的值。
例如,下面的语句使用了 IF()
函数和 CASE
表达式,根据一个数的奇偶性,返回不同的字符串。
SELECT IF(10 MOD 2 = 0, 'Even', 'Odd');
SELECT CASE 10 MOD 2
WHEN 0 THEN 'Even'
WHEN 1 THEN 'Odd'
ELSE 'Unknown'
END;
+-----------------------------------------------------------------------------+
| CASE 10 MOD 2
WHEN 0 THEN 'Even'
WHEN 1 THEN 'Odd'
ELSE 'Unknown'
END |
+-----------------------------------------------------------------------------+
| Even |
+-----------------------------------------------------------------------------+
结论
本文介绍了 MariaDB 的一个常用的控制流函数,COALESCE()
,它用于返回第一个非空的参数。本文还介绍了函数的语法,给出了一些实例,以及列举了一些相关的函数。