LIST()

Версии сервера

0.91.01.5.31.5.41.5.52.02.0.32.0.42.12.53.0
НетНетНетНетНетНетНетНетДаДаДа

Формат

<list function> ::=
  LIST '(' [ {ALL | DISTINCT} ] <value expression> [',' <delimiter value> ] ')'

<delimiter value> ::=
      { <string literal> | <parameter> | <variable> }
АргументОписание
ALLПросматривает все значения в столбце.
DISTINCTИсключает повторяющиеся значения, затем ищет наибольшее.
Столбец или выражение, которое приводится к строковому типу данных.
Выражение, являющееся разделителем списка.
  1. Аргумент ALL или DISTINCT при вызове конструкции может быть пропущен. Если аргумент не задан явно, то по умолчанию считается ALL.
  2. Аргумент может быть пропущен. Если аргумент не задан явно, то по умолчанию берется символ запятая ’,’.

Описание

LIST() является агрегатной функцией, которая обьединяет все элементы группы в строку-список.

Замечания

  1. Числовые типы и типы дата/время неявно преобразуются в строковый тип.
  2. результирующее значение имеет тип BLOB с SUB_TYPE TEXT, кроме случая, когда аргументом является BLOB с другим подтипом.
  3. Порядок элементов в списке определен реализацией, т.е. ORDER BY не влияет на результат.
  4. Начиная с версии 2.5 в качестве может выступать строковая функция.

⚠️ В связи с особенностями реализации функция LIST() потребляет достаточно большое количество памяти во время своей работы. Эта память освобождается после завершения транзакции. По этой причине желательно использовать ее в коротких транзакциях!

Пример

/* v2.1 */
  SELECT LIST(ID, ':')
  FROM MY_TABLE

/* v2.5 */
SELECT
  DISCUSSION_ID,
  LIST(COMMMENT, ASCII_CHAR(13))
FROM COMMENTS
  GROUP BY DISCUSSION_ID;

См. также

SUM(), AVG(), MIN(), MAX(), COUNT(), SELECT

Источник

Firebird-2.1-ReleaseNotes.pdf

Обсуждение