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

PostgreSQL中如何向JSONB列内JSON对象的数组追加元素

向PostgreSQL JSONB数组追加元素的正确写法

假设你的表名为decks,存储JSONB数据的列名为data,要向myFirstDeck.cards数组追加整数4,可以用jsonb_set结合JSONB数组拼接运算符||来实现,SQL语句如下:

UPDATE decks
SET data = jsonb_set(
    data,
    '{myFirstDeck, cards}',
    data->'myFirstDeck'->'cards' || '[4]'::jsonb
)
-- 这里添加你的过滤条件,比如指定某一行:WHERE id = 1;

关键逻辑说明

  • data->'myFirstDeck'->'cards':精准定位到目标数组
  • || '[4]'::jsonb:把新元素组成的JSONB数组和原数组拼接,实现追加效果
  • jsonb_set:将拼接后的新数组替换回原JSON结构的对应位置

动态追加变量的情况

如果要追加的是变量(比如应用传入的参数),可以用to_jsonb()将数值转为JSONB类型,避免手动拼接字符串:

-- 假设new_card是要追加的整数变量
UPDATE decks
SET data = jsonb_set(
    data,
    '{myFirstDeck, cards}',
    data->'myFirstDeck'->'cards' || to_jsonb(new_card)
)
WHERE ...;

处理数组不存在的边界情况

如果cards数组可能不存在(为null),可以用coalesce默认化为空数组,避免拼接出错:

UPDATE decks
SET data = jsonb_set(
    data,
    '{myFirstDeck, cards}',
    coalesce(data->'myFirstDeck'->'cards', '[]'::jsonb) || to_jsonb(5)
)
WHERE ...;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:15:52