list
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 function> ::=
LIST '(' [ {ALL | DISTINCT} ] <value expression> [',' <delimiter value> ] ')'
<delimiter value> ::=
{ <string literal> | <parameter> | <variable> }
| Аргумент | Описание |
|---|---|
| ALL | Просматривает все значения в столбце. |
| DISTINCT | Исключает повторяющиеся значения, затем ищет наибольшее. |
| <value expression> | Столбец или выражение, которое приводится к строковому типу данных. |
| <delimiter value> | Выражение, являющееся разделителем списка. |
- Аргумент ALL или DISTINCT при вызове конструкции может быть пропущен. Если аргумент не задан явно, то по умолчанию считается ALL.
- Аргумент <delimiter value> может быть пропущен. Если аргумент не задан явно, то по умолчанию берется символ запятая ','.
Описание
LIST() является агрегатной функцией, которая обьединяет все элементы группы в строку-список.
Замечания
- Числовые типы и типы дата/время неявно преобразуются в строковый тип.
- результирующее значение имеет тип BLOB с SUB_TYPE TEXT, кроме случая, когда аргументом является BLOB с другим подтипом.
- Порядок элементов в списке определен реализацией, т.е. ORDER BY не влияет на результат.
- Начиная с версии 2.5 в качестве <delimiter value> может выступать строковая функция.
В связи с особенностями реализации функция 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;
См. также
Источник
Firebird-2.1-ReleaseNotes.pdf
list.txt · Последнее изменение: — attid
