首页 > 解决方案 > PosgresQL 中的数组处理中的数组

问题描述

我根据以下查询从 PostgresQL 10.5 的 JsonB 数据类型中提取了数组。它提供数组数据,但作为文本(参见列标题)。

父表的快照

具有 JSONB 列的父数据表

从 JSONB 列中提取数组文本的代码

SELECT "Path" -> 'points' ->> 'coordinates' AS ca from public."Route"

坐标数组提取后的快照

参考下面的快照,它在输出中给出了文本列

我需要以这样的方式处理这个表,我可以[[x1,y1],[x2,y2],...]通过 SQL 调用 x & y 坐标(数组)

标签: sqlarraysjsonpostgresql

解决方案


感谢@Sticky 的指导……我通过博客获得了完整的解决方案

SELECT array_agg(t) 
FROM ( 
       SELECT REPLACE(REPLACE(REPLACE(UNNEST(a), '[', ''), ']', ''),' ','')::decimal AS t, ROW_NUMBER() OVER (ORDER BY 1) AS r 
       FROM ( 
              SELECT STRING_TO_ARRAY(jsonb_array_elements_text("Path"->'points'->'coordinates'), ',') a 
              FROM "Route" 
            ) t 
      ) t 
Group by r 
order by r;

推荐阅读