我已根据以下查询从PostgresQL 10.5的JsonB数据类型中提取了数组。给出数组数据但为文本(请参见列标题)。
具有JSONB列的父数据表
代码从JSONB列中提取数组文本
SELECT "Path" -> 'points' ->> 'coordinates' AS ca from public."Route"
引用下面的快照,该快照在输出中显示文本列
我需要以能够通过SQL调用x和y坐标(数组[[x1,y1],[x2,y2],...]
的x和y坐标)的方式处理该表
答案 0 :(得分:0)
您可以使用子查询,在该子查询中,将JSON数组设置为jsonb_array_elements_text()
,然后将其聚合为array_agg()
并进行转换。
SELECT (SELECT array_agg(jae.e::decimal)
FROM jsonb_array_elements_text("Path"->'points'->'coordinates') jae(e)) points
FROM "Route";
答案 1 :(得分:0)
感谢@Sticky的指导。...我通过Blog
获得了完整的解决方案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;