You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何替换JSON(非JSONB)字段内的指定条目?

PostgreSQL JSON类型字段修改指定键值

解决方案(PostgreSQL 12+)

直接使用json_set函数修改JSON字段中指定键的值,这是最简洁的方式:

UPDATE users
SET settings = json_set(settings, '{foo}', '"three"')
WHERE name = 'bob'; -- 按需添加WHERE条件,不添加则更新所有用户的settings字段

兼容低版本方案(PostgreSQL <12)

如果你的PostgreSQL版本低于12,不支持json_set,可以手动构建新的JSON对象:

UPDATE users
SET settings = json_build_object(
    'foo', 'three',
    'bar', json_extract_path_text(settings, 'bar')
)
WHERE name = 'bob';

这种方式需要显式保留原JSON中需要保留的键值对,适合键数量较少的场景。

验证结果

执行更新后,运行以下查询确认修改成功:

SELECT name, settings FROM users WHERE name = 'bob';

返回结果应为:

name  | settings
----------------------------
"bob" | {"foo": "three", "bar": "two"}

内容的提问来源于stack exchange,提问作者joel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 19:09:52