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

PostgreSQL中JSONB对象属性按X增量更新的SQL语句写法

PostgreSQL 增量更新JSONB字段指定属性的写法

你可以使用PostgreSQL内置的jsonb_set函数实现需求,该函数仅修改指定路径的JSON值,不会改动其余结构,适配9.5及以上版本。

通用SQL语句

将语句中的X替换为你需要的增量值即可:

UPDATE Reservation
SET charges = jsonb_set(
    charges,
    '{total}',
    ((charges ->> 'total')::numeric + X)::jsonb
)
-- 可自行补充WHERE条件筛选需要更新的行,例如 WHERE id = 123

容错优化写法

如果存在部分行的charges字段没有total属性的场景,可以加COALESCE做兼容,缺失total时默认按原值为0计算增量:

UPDATE Reservation
SET charges = jsonb_set(
    charges,
    '{total}',
    (COALESCE((charges ->> 'total')::numeric, 0) + X)::jsonb
)

效果示例

如果你需要将total的值加10,替换X为10执行后,原有JSONB结构中的charges数组内容会完全保留,仅total的值从0更新为10,最终结果为:

{"total": 10, "charges": [{"foo": "bar"}]}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:06:02