我有一列包含以下文本資料(2行):
{"{john,m,25.01.1980}","{steve,m,12.12.1995}","{kate,f,17.04.1990}"}
{"{max,m,26.01.1980}","{sarah,f,18.04.1990}"}
這需要像這樣(2行)轉換成json:
[{ "birth_date": 1234567890, "name": "john", "gender": "m" }, { "birth_date": 1234567890, "name": "steve", "gender": "m" }, { "birth_date": 1234567890, "name": "kate", "gender": "f" }]
[{ "birth_date": 1234567890, "name": "max", "gender": "m" }, { "birth_date": 1234567890, "name": "sarah", "gender": "f" }]
我曾嘗試使用 UNNEST、row_to_json 和 json_build_object,但無法弄清楚如何做到這一點。
uj5u.com熱心網友回復:
你可以試試這個:
SELECT jsonb_agg(jsonb_build_object
('birth_date', split_part(left(d.data, -1), ',', 3) :: date
,'name', split_part(right(d.data, -1), ',', 1)
,'gender', split_part(d.data, ',', 2)))
FROM your_table AS t
CROSS JOIN LATERAL unnest(t.your_text_column :: text[]) AS d(data)
GROUP BY t
在dbfiddle中查看測驗結果。
uj5u.com熱心網友回復:
這是一種方法:
select Id
, json_agg(json_build_object('name', split_part(jsondata, ',',1) , 'gender', split_part(jsondata, ',',2), 'birth_date', split_part(jsondata, ',' ,3))) json_info
from (
select id
, replace(replace(json_array_elements(replace(replace(info,'{"','["'), '"}','"]')::json) #>> '{}','{',''),'}','') jsondata
from tablename
) t group by id
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/418798.html
標籤:
上一篇:將Python變數傳遞給Postgresql的“IN”
下一篇:升級到postgres版本14
