Рассмотрим таблицу со следующими строками:PostgreSQL: SELECT функции по всем пунктам в массиве
id | bigint
polygons | geometry(Polygon,4326)[]
SELECT
-ную polygons
строку возвращает массив двоичных данных нечитаемым:
SELECT polygons FROM some_table WHERE id=405;
{0103000020E61000000100000006000000B84F039E5AC0E375243935C13F402...}
Использование st_AsText
на первом элементе возвращает считываемый выход:
SELECT st_AsText(polygons[1]) FROM some_table WHERE id=405;
POLYGON((-106.4689521119 31.7547183717742 ...)
Unsurprisingly, функция работает только на элементе, а не на массиве:
SELECT st_AsText(polygons) FROM some_table WHERE id=405;
ERROR: function st_astext(geometry[]) does not exist
Собирает в Python жаргоне, я ищу эквивалент print [st_AsText(p) for i in polygons]
в PostgreSQL.
Как запустить функцию PostgreSQL для всех элементов массива в инструкции SELECT, a-la Python's list comprehension?
Добавление Я думаю, что это не является строгим дубликат, потому что How to apply a function to each element of an array column in Postgres?
обрабатывает встроенный массив (например FROM unnest(ARRAY[1.53224,0.23411234])
), в то время как этот вопрос обрабатывает SELECT
заявления из таблицы, содержащей столбец массива. Преобразование не тривиально, по крайней мере для меня.