如何在 Postgresql 中添加、更新和删除 Json 数据类型?
How To Add,Update And Delete From Json DataType On Postgresql?
这是我在 PostgreSQL 上的 table 姓名联系人:
- 我想用这个 sql 查询编辑 mobile1 值:
update contacts->info set mobile1 = JSON_SET(mobile1, "123456") where id=5
但上面写着 :: 错误:“->”处或附近的语法错误
- 当我想使用此 sql 查询删除或添加值时:
delete orders->info->mobile2 where id=5
“订单”处或附近的语法错误
- 或添加
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
操作或函数。
- 更新场景:
update contacts
set info = jsonb_set(info::jsonb, '{mobile,mobile1}', '"123456"')::json
where id = 5;
- 删除场景:
update contacts
set info = (info::jsonb #- '{mobile,mobile2}')::json
where id = 5;
- 添加场景:
update contacts
set info = jsonb_set(info::jsonb, '{mobile,mobile3}', '"123456"')::json
where id = 5;
这是我在 PostgreSQL 上的 table 姓名联系人:
- 我想用这个 sql 查询编辑 mobile1 值:
update contacts->info set mobile1 = JSON_SET(mobile1, "123456") where id=5
但上面写着 :: 错误:“->”处或附近的语法错误
- 当我想使用此 sql 查询删除或添加值时:
delete orders->info->mobile2 where id=5
“订单”处或附近的语法错误
- 或添加
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
操作或函数。
- 更新场景:
update contacts
set info = jsonb_set(info::jsonb, '{mobile,mobile1}', '"123456"')::json
where id = 5;
- 删除场景:
update contacts
set info = (info::jsonb #- '{mobile,mobile2}')::json
where id = 5;
- 添加场景:
update contacts
set info = jsonb_set(info::jsonb, '{mobile,mobile3}', '"123456"')::json
where id = 5;