gpt4 book ai didi

postgresql - 如何使用 row_to_json 在 postgresql 中将多列合并为一列

转载 作者:行者123 更新时间:2023-11-29 13:26:32 24 4
gpt4 key购买 nike

我有一个包含 3 列的表格:

id|name|geometry
-----------------
1 |xie|geometry

我想获取 geojson 格式的几何图形。

select id,name,ST_AsGEOJSON(geom) from table;
`o/p : `'{"id":"1","name":"xie","type":"Polygon","coordinates"[[[103.349002218076,-4.79402531349065]]]}'`

然后我使用 row_to_json 来组合列:

SELECT row_to_json(t) from (SELECT id,name,ST_AsGEOJSON(geom) from table where id=1)t

此命令将原始输出更改为:

o/p :`'{"id":"1","name":"xie","st_asgeojson":"{\"type\":\"Polygon\",\"coordinates\":[[[102.325742539781,-3.83353755877152]]]}"}'` 

但我想在不改变原始输出的情况下合并列。我该怎么做?

最佳答案

你有两个选择:

1) 您构建一个 json,其几何形状为 geojson 但表示为字符串(不带引号):

SELECT row_to_json(t) FROM (
SELECT id,name,replace(ST_AsGEOJSON(geom),'"','') AS geom
FROM table where id=1
) AS t;

结果:

{"id":1,"name":"xie","geom":"{type:Polygon,coordinates:[[[0,0],[0,1],[1,1],[1,0],[0,0]]]}"}

2) 使用合法的 geojson 几何构造一个 json。不幸的是,Postgres 还没有真正支持将 json 附加到另一个。您必须手动构建 Json:

 SELECT (format(
'{"id":%s,"name":%s,"geom":%s}', to_json(id), to_json(name),st_asgeojson(geom))
)::json from table where id=1;

结果:

{"id":1,"name":"xie","geom":{"type":"Polygon","coordinates":[[[0,0],[0,1],[1,1],[1,0],[0,0]]]}}

关于postgresql - 如何使用 row_to_json 在 postgresql 中将多列合并为一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32888331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com