postgresql – postgres jsonb_set多个密钥更新

前端之家收集整理的这篇文章主要介绍了postgresql – postgres jsonb_set多个密钥更新前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有DB表和jsonb列.
number  | data
    1   | {"name": "firstName","city": "toronto","province": "ON"}

我需要一种更新数据列的方法.
所以我的输出应该是这样的:

{"name": "firstName","city": "ottawa","province": "ON","phone": "phonenum","prefix": "prefixedName"}

json_set可以吗?
添加了如下查询

update table_name set data = jsonb_set(data,'{city}','"ottawa"') where number = 1;

但是,我需要一种方法添加新的键值(如果它不存在)并更新键值(如果它存在).是否可以在单个查询中实现此目的?

documentation says

The || operator concatenates the elements at the top level of each of its operands. … For example,if both operands are objects with a common key field name,the value of the field in the result will just be the value from the right hand operand.

所以使用你的示例数据:

update table_name set
  data = data || '{"city": "ottawa","prefix": "prefixedName"}'
where number = 1;

此外,如果您要编辑的对象不在顶层 – 只需组合连接和jsonb_set函数.例如,如果原始数据看起来像

{"location": {"name": "firstName","province": "ON"}}

然后

...
data = jsonb_set(data,'{location}',data->'location' || '{"city": "ottawa","prefix": "prefixedName"}')
...
原文链接:https://www.f2er.com/postgresql/192754.html

猜你在找的Postgre SQL相关文章