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



我有一个表,它有一列是由创建的

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上的演示

可乐:-----|:---527813 | 184525947 | 133529957|178531490 | 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演示

相关内容

最新更新