假设我在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 =?' –