Функция STRING_AGG стр. 2 |
|||||||||||||||||||||||
На предыдущей странице для SQL Server решалась задача вывода отсортированного списка кораблей каждой страны. Приведем здесь примеры решения этой задачи, для некоторых других популярных СУБД. MySQLКак уже упоминалось, в MySQL для этой цели служит функция GROUP_CONCAT:
Результаты:
Как видно по результатам, разделителем списка по умолчанию является запятая. Однако вы можете указать в качестве разделителя любую последовательность символов (а также пустую строку) с помощью необязательного предложения SEPARATOR. В примере ниже используется трехсимвольный разделитель " | ".
PostgreSQLВ PostgreSQL эту задачу можно решить следующим образом:
Здесь функция ARRAY_AGG формирует массив из имен кораблей, упорядочив их по возрастанию. Функция ARRAY_TO_STRING преобразует массив в строку, используя в нашем случае запятую в качестве разделителя элементов массива. Как и для MySQL, в качестве разделителя мы можем использовать любую строку символов. Но здесь разделитель является обязательным элементом, т.е. значения по умолчанию нет. OracleДля Oracle решение похоже на решение для SQL Server, только функция агрегации называется LISTAGG, а не STRING_AGG:
Есть и другие синтаксические отличия. Так, разделитель в LISTAGG, в отличие от STRING_AGG, является необязательным параметром. Если его опустить, выполняется конкатенация строк, т.е. по умолчанию разделителем является пустая строка (''). Зато предложение WITHIN в Oracle является обязательным. "Есть многое на свете, друг Горацио...".
|