簡體   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