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

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;

Результат:

John, Jane

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