首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修改新的PostgreSQL JSON数据类型中的字段?

如何修改新的PostgreSQL JSON数据类型中的字段?
EN

Stack Overflow用户
提问于 2013-08-13 20:51:27
回答 13查看 349.3K关注 0票数 306

使用PostgreSQL9.3,我可以对JSON数据类型的特定字段执行SELECT操作,但是如何使用UPDATE修改它们呢?我在postgresql文档或者在线的任何地方都找不到任何这样的例子。我尝试过显而易见的方法:

代码语言:javascript
复制
postgres=# create table test (data json);
CREATE TABLE
postgres=# insert into test (data) values ('{"a":1,"b":2}');
INSERT 0 1
postgres=# select data->'a' from test where data->>'b' = '2';
 ?column?
----------
 1
(1 row)
postgres=# update test set data->'a' = to_json(5) where data->>'b' = '2';
ERROR:  syntax error at or near "->"
LINE 1: update test set data->'a' = to_json(5) where data->>'b' = '2...
EN

回答 13

Stack Overflow用户

发布于 2016-01-21 14:09:41

在9.5中使用jsonb_set-

代码语言:javascript
复制
UPDATE objects
SET body = jsonb_set(body, '{name}', '"Mary"', true)
WHERE id = 1; 

其中body是jsonb列类型。

票数 144
EN

Stack Overflow用户

发布于 2016-07-07 19:47:50

代码语言:javascript
复制
UPDATE test
SET data = data::jsonb - 'a' || '{"a":5}'::jsonb
WHERE data->>'b' = '2'

这似乎可以在PostgreSQL 9.5上运行

票数 9
EN

Stack Overflow用户

发布于 2018-03-09 20:57:52

当我尝试更新字符串类型字段时,这对我很有效。

代码语言:javascript
复制
UPDATE table_name 
SET body = jsonb_set(body, '{some_key}', to_json('value'::text)::jsonb);

希望它能帮助其他人!

假设表table_name有一个名为body的jsonb列,并且您想要更改body.some_key =‘值’

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18209625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档