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

PostgreSQL 向现有JSON字段新增键值对的正确查询方法

PostgreSQL 向已有JSON/JSONB字段新增顶层键值对方案

执行JSON键值对新增时出现新内容溢出到JSON结构外部,通常由两个原因导致:

  • 字段类型为json而非jsonb时,直接使用||会触发字符串拼接而非JSON结构合并,导致格式错乱
  • WHERE条件里的id = "myId"写法错误,PostgreSQL中双引号用于标识字段/表名,字符串值需要用单引号包裹,写法错误可能导致匹配逻辑异常

对应场景正确写法

场景1:字段类型为jsonb(官方推荐存储JSON的类型)

直接使用jsonb自带的键合并操作符即可,会自动在顶层追加不存在的键,已存在的键会被新值覆盖:

UPDATE table_name 
SET column_name = column_name || '{"newValue": {"test": {}}}'::jsonb 
WHERE id = 'myId';

场景2:字段类型为json

先将字段转为jsonb完成合并操作,再转回json类型写回:

UPDATE table_name 
SET column_name = (column_name::jsonb || '{"newValue": {"test": {}}}'::jsonb)::json 
WHERE id = 'myId';

结果校验

执行更新后可运行如下查询确认结果符合预期:

SELECT column_name FROM table_name WHERE id = 'myId';

返回结果会在原有JSON结构顶层新增newValue键,不会出现内容溢出到JSON结构外的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:57:21