0

我找到了一些资料,但有些资料没有解释清楚或例子难以理解。此示例在 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
4

1 回答 1

0

您可以person使用以下命令重置整个属性jsonb_set()

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

DB Fiddle 上的演示

| jsonb_set |
| :------------------------------------------------ -- |
| {"id": 1, "person": {"name": "lisa", "gender": "F"}} |
于 2020-03-21T10:42:29.940 回答