CONCAT
概述
CONCAT
CONCAT
函数用于连接多个字符串、数组或二进制数据。根据输入参数的类型,
CONCAT
CONCAT
函数可以执行以下操作:
- 将多个数组元素组合成一个新的数组。
- 将多个字符串拼接成一个新的字符串。
- 将多个二进制数据拼接成一个新的二进制数据。
语法
CONCAT(array1, array2, ..., arrayN)
CONCAT(str1, str2, ..., strN)
CONCAT(binary1, binary2, ..., binaryN)
参数
array1 ~ arrayN
array1 ~ arrayN
: array<T>
array<T>
类型,表示要连接的数组。
str1 ~ strN
str1 ~ strN
: string
string
类型,表示要连接的字符串。
binary1 ~ binaryN
binary1 ~ binaryN
: binary
binary
类型,表示要连接的二进制数据。
返回结果
- 数组重载版本:返回一个
array<T>
array<T>
类型的新数组。
- 字符串重载版本:返回一个连接后的字符串;任一参数为
NULL
NULL
时返回 NULL
NULL
。
- 二进制重载版本:返回一个连接后的二进制数据。
示例
- 连接两个数组:
SELECT CONCAT(array(1, 2), array(3, 4));
结果:
[1, 2, 3, 4]
- 连接多个字符串:
SELECT CONCAT('hello', '-', 'world');
结果:
hello-world
- 连接两个二进制数据:
SELECT CONCAT(CAST('123' AS BINARY), CAST('456' AS BINARY));
结果:
[31 32 33 34 35 36]
- 连接字符串和数字(注意:数字需要先转换为字符串):
SELECT CONCAT('The price is ', CAST(100 AS STRING), ' dollars.');
结果:
The price is 100 dollars.
- 使用
CONCAT
CONCAT
函数连接多个字段:
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM users;
结果:
full_name
----------
John Doe
Jane Smith
- 字符串参数包含
NULL
NULL
:
SELECT CONCAT('a', NULL, 'b');
-- 返回:NULL
CONCAT
CONCAT
会传播
NULL
NULL
。如果需要忽略
NULL
NULL
,可以使用
CONCAT_WS
CONCAT_WS
:
SELECT CONCAT_WS('', 'a', NULL, 'b');
-- 返回:ab
注意事项
CONCAT
CONCAT
与 CONCAT_WS
CONCAT_WS
的 NULL 语义不同:前者传播 NULL,后者忽略分隔符之后的 NULL 参数。
- 数组和二进制重载应使用同类型参数;不要把字符串重载的隐式转换规则直接套用到其他重载。