[英]Join two Json arrays to one with key and value postgresql
我有兩個 jsonb 列(鍵、值)。 例如:鍵列值 = ["key1","key2","key3","key4"]
值列 = ["val1","val2","val3","val4"]
我想根據數組索引編寫一個 select 查詢以獲取如下 output。
{"key1":"val1","key2":"val2","key3":"val3","key4":"val4"}
問題是數組大小不會固定。 每行包含不同的大小。 但是鍵和值列大小將始終相同。
你正在尋找的是json_array_elements
function 來分解 JSON 和json_agg
來重新壓縮它們
我復制了你的案例
create table jsonb_test (a jsonb, b jsonb);
insert into jsonb_test values ('["key1","key2","key3","key4"]','["val1","val2","val3","val4"]');
解決問題的查詢是
with row_tbl as (
select
replace(cast(json_array_elements(a::json) as varchar),'"','') k,
replace(cast(json_array_elements(b::json) as varchar),'"','') v
from jsonb_test)
select json_agg(
json_build_object(k,v)) as complete_json
from row_tbl
;
SELECT
json_object_agg( -- 3
keys ->> gs, -- 2
vals -> gs
)
FROM
mytable,
generate_series(0, json_array_length(keys) - 1) as gs -- 1
json_array_length()
)並生成索引系列。keys
和values
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.