跳到主要内容
跳到主要内容

groupConcat

从一组字符串计算出拼接后的字符串,可选地使用分隔符分隔,并可选地限制包含的最大元素数量。

语法

groupConcat[(delimiter [, limit])](expression);

Alias: group_concat

参数

  • expression — 输出要拼接字符串的表达式或列名。
  • delimiter — 用于分隔拼接后值的字符串。此参数是可选的,如果未指定,则默认为空字符串,或使用在参数列表中提供的分隔符。

参数列表

  • delimiter — 用于分隔拼接后值的字符串。此参数是可选的,如果未指定,则默认为空字符串。
  • limit — 指定要拼接的元素最大数量的正整数。如果存在更多元素,则多余元素将被忽略。此参数是可选的。
注意

如果只指定了 delimiter 而未指定 limit,则 delimiter 必须是第一个参数。如果同时指定了 delimiter 和 limit,则 delimiter 必须在 limit 之前。

另外,如果在参数(Arguments)和参数列表(Parameters)中指定了不同的分隔符,则仅使用参数(Arguments)中的分隔符。

返回值

  • 返回一个字符串,由该列或表达式的值拼接而成。如果分组中没有元素或只有 null 元素,并且函数未指定仅 null 值的处理方式,则结果为具有 null 值的 Nullable 字符串。

示例

输入表:

┌─id─┬─name─┐
│  1 │ John │
│  2 │ Jane │
│  3 │ Bob  │
└────┴──────┘
  1. 基本用法(无分隔符):

查询:

SELECT groupConcat(Name) FROM Employees;

结果:

JohnJaneBob

这会将所有名称连接成一个没有任何分隔符的连续字符串。

  1. 使用逗号作为分隔符:

查询:

SELECT groupConcat(', ')(Name)  FROM Employees;

SELECT groupConcat(Name, ', ')  FROM Employees;

结果:

John, Jane, Bob

此输出显示名称之间以“逗号+空格”分隔。

  1. 限制拼接元素的数量

Query:

SELECT groupConcat(', ', 2)(Name) FROM Employees;

结果:

John, Jane

这个查询只返回前两个名称,即使表中还有更多名称。