<分区>
考虑一个包含以下行的表格:
id | bigint
polygons | geometry(Polygon,4326)[]
SELECT
-ing 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 ...)
不出所料,该函数仅适用于元素,不适用于数组:
SELECT st_AsText(polygons) FROM some_table WHERE id=405;
ERROR: function st_astext(geometry[]) does not exist
用 Python 术语来说,我正在寻找 PostgreSQL 中的 print [st_AsText(p) for i in polygons]
等价物。
如何在 SELECT 语句中对数组的所有元素运行 PostgreSQL 函数,就像 Python 的列表理解一样?
附录
我认为这不是严格的重复,因为 How to apply a function to each element of an array column in Postgres?
处理内联数组(例如 FROM unnest(ARRAY[1.53224,0.23411234])
),而此问题处理来自包含数组列的表的 SELECT
语句。转换并非微不足道,至少对我而言。