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

Postgres中如何向json类型数组追加元素(非jsonb)

向PostgreSQL JSON类型数组追加元素的实现方案

PostgreSQL原生没有为JSON类型提供JSONB那样的||拼接操作符,但可以通过内置函数或类型转换两种方式实现数组追加需求:

方法1:使用json_array_append原生函数

json_array_append是专门针对JSON类型的数组追加函数,无需额外类型转换:

  1. 先确保表和初始数据格式正确(注意初始值需为JSON数组格式):
CREATE TABLE OrderData (
    uuid text NOT NULL PRIMARY KEY UNIQUE,
    info json NOT NULL
);

INSERT INTO orderdata
VALUES('abcd','[{"items": {"product": "Jelly","qty": 1}}]');
  1. 执行追加更新操作:
UPDATE orderdata 
SET info = json_array_append(info, '{"items": {"product": "Grape","qty": 10}}'::json) 
WHERE uuid = 'abcd';
  1. 验证更新结果:
SELECT * FROM orderdata;

方法2:转JSONB操作后转回JSON

如果习惯使用JSONB的||操作符,可以先将JSON转成JSONB完成拼接,再转回JSON类型:

UPDATE orderdata 
SET info = (info::jsonb || '{"items": {"product": "Grape","qty": 10}}'::jsonb)::json 
WHERE uuid = 'abcd';

关键注意点

  • 必须保证info字段的初始值是JSON数组(即被[]包裹)。如果初始存的是单个JSON对象,可先执行以下语句转为数组:
    UPDATE orderdata 
    SET info = json_build_array(info) 
    WHERE uuid = 'abcd' AND json_typeof(info) = 'object';
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:25:07