====== LIST() ======
===== Версии сервера =====
^ 0.9 ^ 1.0 ^ 1.5.3 ^ 1.5.4 ^ 1.5.5 ^ 2.0 ^ 2.0.3 ^ 2.0.4 ^ 2.1 ^ 2.5 ^ 3.0 ^
| Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Да | Да | Да |
===== Формат =====
::=
LIST '(' [ {ALL | DISTINCT} ] [',' ] ')'
::=
{ | | }
^ Аргумент ^ Описание ^
|ALL |Просматривает все значения в столбце. |
|DISTINCT |Исключает повторяющиеся значения, затем ищет наибольшее. |
| |Столбец или выражение, которое приводится к строковому типу данных. |
| |Выражение, являющееся разделителем списка. |
- Аргумент ALL или DISTINCT при вызове конструкции может быть пропущен. Если аргумент не задан явно, то по умолчанию считается ALL.
- Аргумент может быть пропущен. Если аргумент не задан явно, то по умолчанию берется символ запятая ','.
===== Описание =====
LIST() является агрегатной функцией, которая обьединяет все элементы группы в строку-список.
===== Замечания =====
- Числовые типы и типы дата/время неявно преобразуются в строковый тип.
- результирующее значение имеет тип BLOB с SUB_TYPE TEXT, кроме случая, когда аргументом является BLOB с другим подтипом.
- Порядок элементов в списке определен реализацией, т.е. ORDER BY не влияет на результат.
- Начиная с версии 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