假設我在Postgres上有一張jsonb列的表格,其中包含{"a": 1, "b": 2}
。現在我想用同樣的id和{"b": 10, "c": 20}
作爲jsonb列值。如何在Postgres中插入記錄時合併現有的jsonb字段?
因此,我希望該行的jsonb字段包含{"a": 1, "b": 10, "c": 20}
。這怎麼能實現?
假設我在Postgres上有一張jsonb列的表格,其中包含{"a": 1, "b": 2}
。現在我想用同樣的id和{"b": 10, "c": 20}
作爲jsonb列值。如何在Postgres中插入記錄時合併現有的jsonb字段?
因此,我希望該行的jsonb字段包含{"a": 1, "b": 10, "c": 20}
。這怎麼能實現?
如果連擊2 jsonb值,你實現你想要什麼,例如:
select '{"a": 1, "b": 2}'::jsonb || '{"b": 10, "c": 20}'::jsonb
生產:"{"a": 1, "b": 10, "c": 20}"
如果兩個操作數都是有一個共同的鍵字段名稱的對象,價值結果中的字段將只是右手操作數的值。
https://www.postgresql.org/docs/current/static/functions-json.html
如果你想要一個 「更新插入」,你可以用insert ... on conflict...
insert into the_table (id, json_column)
values (1, '{"b": 10, "c": 20}'::jsonb)
on conflict (id) do update
set json_column = json_column || excluded.json_column;
感謝做到這一點!我將如何去插入新的jsonb對象,使舊的和新的連接在一起? – user7807740
如果你需要更新現有的jsonb值,那麼你可以這樣做:'uptade table_name set col = col || '{「b」:10,「c」:20}':: jsonb其中id =?' –