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 · Последнее изменение: 2024/05/27 13:09 — 213.230.100.121
Обсуждение