如何在 Postgresql 中添加、更新和删除 Json 数据类型?

How To Add,Update And Delete From Json DataType On Postgresql?

这是我在 PostgreSQL 上的 table 姓名联系人:

  1. 我想用这个 sql 查询编辑 mobile1 值:

update contacts->info set mobile1 = JSON_SET(mobile1, "123456") where id=5

但上面写着 :: 错误:“->”处或附近的语法错误

  1. 当我想使用此 sql 查询删除或添加值时:

delete orders->info->mobile2 where id=5

“订单”处或附近的语法错误

  1. 或添加

update orders->info set mobile3 = JSON_SET(mobile3, "123456") where id=5

“->”或其附近的语法错误

我的语法问题是什么?以及如何在 PostgreSQL

上添加、更新和删除我的 json 数据类型 table

问题1的解决方法

正在更新 mobile1 json 字段中的 info json 值:

   update contacts 
      set info = jsonb_set(info :: jsonb, '{mobile,mobile1}', '123456', true) :: json
    where id=5

问题 2 的解决方案

info json 字段中删除 mobile2 key/value 对:

   update contacts 
      set info = (info :: jsonb #- '{mobile,mobile2}') :: json
    where id=5

正在从联系人中删除整行 table :

delete from contacts where id=5

你应该仔细阅读手册Chapter 6. Data Manipulation and 9.16. JSON Functions and Operators

根据 Postgres document 对于插入、更新或删除,您应该使用 JSONB 操作或函数。

Demo

  1. 更新场景:
update contacts
set info = jsonb_set(info::jsonb, '{mobile,mobile1}', '"123456"')::json
where id = 5;
  1. 删除场景:
update contacts
set info = (info::jsonb #- '{mobile,mobile2}')::json
where id = 5;
  1. 添加场景:
update contacts
set info = jsonb_set(info::jsonb, '{mobile,mobile3}', '"123456"')::json
where id = 5;