繁体   English   中英

postgres 提取 JSON 列键和值以分隔列

[英]postgres extract JSON column key and values to separate columns

我有一个表,其中有一列是由

json_object_agg(eventid,date_now_range) eventids_range

这就是数据存储在表中的样子

{ "527813" : 184, "525947" : 133, "529957" : 178, "531490" : 143 }

我想选择这条记录并让键和值成为它自己的记录

所以这

select eventids_range from special_event_conflicts

会返回这样的东西

col a     col b
527813    184
525947    133
529957    178
531490    143

这是一种选择:

select k.cola, v.colb
from mytable t
cross join lateral json_object_keys(t.eventids_range) as k(cola)
cross join lateral json_extract_path_text(t.eventids_range, k.cola) v(colb)

这是通过从物体使用第一提取密钥json_object_keys()然后用访问对应的值json_extract_path_text()

DB Fiddle 上的演示

cola   | colb
:----- | :---
527813 | 184 
525947 | 133 
529957 | 178 
531490 | 143

另一个 - 可能更好 - 解决方案是使用json_each()

select x.cola, x.colb
from mytable t
cross join lateral json_each(t.eventids_range) as x(cola, colb)

DB Fiddle 上的演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM