groupConcat
从一组字符串计算一个连接后的字符串,可选择使用分隔符分隔,并可选择限制最大元素数量。
语法
groupConcat[(delimiter [, limit])](expression);
参数
expression
— 表达式或列名,输出要连接的字符串。delimiter
— 一个 字符串,将用于分隔连接的值。此参数是可选的,如果未指定,则默认为空字符串或来自参数的分隔符。
参数
delimiter
— 一个 字符串,将用于分隔连接的值。此参数是可选的,如果未指定,则默认为空字符串。limit
— 一个正 整数,指定要连接的最大元素数量。如果存在更多元素,则忽略多余的元素。此参数是可选的。
注意
如果指定了分隔符但没有限制,则它必须是第一个参数。如果同时指定了分隔符和限制,则分隔符必须在限制之前。
此外,如果参数和实参中指定了不同的分隔符,则仅使用实参中的分隔符。
返回值
- 返回一个 字符串,其中包含列或表达式的连接值。如果组没有元素或只有 null 元素,并且该函数没有为仅 null 值指定处理方式,则结果是一个可为空的字符串,其值为 null。
示例
输入表
┌─id─┬─name─┐
│ 1 │ John │
│ 2 │ Jane │
│ 3 │ Bob │
└────┴──────┘
- 不带分隔符的基本用法
查询
SELECT groupConcat(Name) FROM Employees;
结果
JohnJaneBob
这会将所有名称连接成一个连续的字符串,没有任何分隔符。
- 使用逗号作为分隔符
查询
SELECT groupConcat(', ')(Name) FROM Employees;
或
SELECT groupConcat(Name, ', ') FROM Employees;
结果
John, Jane, Bob
此输出显示以逗号后跟空格分隔的名称。
- 限制连接元素的数量
查询
SELECT groupConcat(', ', 2)(Name) FROM Employees;
结果
John, Jane
即使表中还有更多名称,此查询也将输出限制为前两个名称。