PostgreSQL-如何更新嵌套的JSONB元素

时间:2020-03-21 10:28:53

标签: sql json postgresql jsonb postgresql-12

我找到了一些信息,但是其中一些信息没有清楚解释,或者示例令人费解。 此示例已在PostgreSQL 12上成功执行。要求是使用PostgreSQL部分更改JSON结构。 JSONB用作数据类型。

数据结构具有以下外观

{
   "id":1,
   "person":{
      "name":"fred"
   }
}

要更改数据记录。必须更改属性$.person.name,并添加$.person.gender

select '{"id":1, "person" : {  "name" : "fred" } }'::jsonb || '{"person": { "name" : "lisa", "gender" : "F" }}'::jsonb

结果包含相应的修改。

{
   "id":1,
   "person":{
      "name":"lisa",
      "gender":"F"
   }
}

JSONB列data的更新语句如下

update t_person set data = data || '{"person": { "name" : "lisa", "gender" : "F" }}'::jsonb

1 个答案:

答案 0 :(得分:0)

您可以使用person重设整个jsonb_set()属性:

select jsonb_set(
    '{"id":1, "person" : { "name" : "fred" } }'::jsonb,
    '{person}',
    '{ "name":"lisa", "gender":"F" }'::jsonb
)

Demo on DB Fiddle

| jsonb_set                                            |
| :--------------------------------------------------- |
| {"id": 1, "person": {"name": "lisa", "gender": "F"}} |