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

如何使用PostgreSQL表中现有数据更新JSONB列

PostgreSQL 更新列为基于现有字段的JSON对象

你不需要用jsonb_set来生成全新的JSON对象,直接用PostgreSQL提供的JSON构造函数就能实现需求:

1. 直接生成新JSON对象覆盖列(推荐)

如果json_object列是jsonb类型(推荐使用jsonb而非json),用jsonb_build_object直接构造对象并赋值:

UPDATE table_name
SET json_object = jsonb_build_object('id', note_id, 'attribute', sentence)
WHERE note_id = 12345;

如果是json类型,替换成json_build_object即可。

2. 基于现有JSON更新指定键(保留其他键)

如果需要保留json_object中已有的其他键值,只更新id和attribute这两个字段,才需要用到jsonb_set:

UPDATE table_name
SET json_object = jsonb_set(
    jsonb_set(json_object, '{id}', to_jsonb(note_id)),
    '{attribute}', to_jsonb(sentence)
)
WHERE note_id = 12345;

这里通过嵌套jsonb_set依次更新两个键,to_jsonb用来将字段值转为jsonb类型匹配列类型。

3. 替换整个现有JSON对象(用jsonb_set的写法)

如果一定要用jsonb_set实现完全替换,也可以指定空路径'{}':

UPDATE table_name
SET json_object = jsonb_set(
    json_object,
    '{}',
    jsonb_build_object('id', note_id, 'attribute', sentence)
)
WHERE note_id = 12345;

但这种写法和第一种直接构造的效果一致,没必要多此一举。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:22:34