Перейти к основному содержанию
Перейти к основному содержанию

groupConcat

Формирует строку, полученную конкатенацией группы строк, при необходимости разделённых разделителем и с возможностью ограничения максимального числа элементов.

Синтаксис

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

Псевдоним: group_concat

Аргументы

  • expression — выражение или имя столбца, результатом которого являются строки для конкатенации.
  • delimiterстрока, которая будет использоваться для разделения конкатенированных значений. Этот параметр является необязательным и по умолчанию имеет значение пустой строки или разделителя из параметров, если он не указан.

Параметры

  • delimiterстрока, которая будет использоваться для разделения конкатенированных значений. Этот параметр является необязательным и по умолчанию имеет значение пустой строки, если он не указан.
  • limit — положительное целое число, задающее максимальное количество элементов для конкатенации. Если элементов больше, лишние элементы игнорируются. Этот параметр является необязательным.
Примечание

Если delimiter указан без limit, он должен быть первым параметром. Если указаны и delimiter, и limit, delimiter должен предшествовать limit.

Также, если разные разделители указаны как параметры и как аргументы, будет использоваться только разделитель из аргументов.

Возвращаемое значение

  • Возвращает строку, состоящую из конкатенированных значений столбца или выражения. Если группа не содержит элементов или содержит только значения null, и функция не определяет отдельную обработку случая, когда есть только значения null, результатом является строка типа Nullable со значением null.

Примеры

Входная таблица:

┌─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. Ограничение количества объединяемых элементов

Запрос:

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

Результат:

Иван, Мария

Этот запрос ограничивает вывод первыми двумя именами, хотя в таблице содержится больше имён.