arrays - PostgreSQL:对数组中的所有项目选择一个函数

标签 arrays postgresql postgis postgresql-9.3 sql-function

<分区>

考虑一个包含以下行的表格:

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 语句。转换并非微不足道,至少对我而言。

最佳答案

使用unnest() :

SELECT st_AsText(p) 
FROM some_table, unnest(polygons) p 
WHERE id=405;

关于arrays - PostgreSQL:对数组中的所有项目选择一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34592544/

相关文章:

php - 在 foreach 循环中为二维数组赋值

c - 打印数组元素

mysql - 迁移到 Postgres 后,Rails 写入时间延长了 100%

mysql - 从返回我们表的选择中更新行

sql - PostgreSQL/PostGIS 统计访问次数

postgresql - Postgis Tiger Geocoder 返回空结果

javascript - 根据另一个数组的值显示数组的值

arrays - SKTextures 未加载到 iPod Touch 上的阵列中

regex - 拆分时在返回值中包含拆分 token

cassandra - 如何在 Cassandra 中表示空间数据