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

PostgreSQL中如何将jsonb数组转换为普通jsonb类型

PostgreSQL jsonb数组提取为独立对象操作方案

前置验证(建议先执行,避免误操作)

首先执行查询确认待修改的数据符合预期:

SELECT id, jdoc FROM api WHERE id = 4;

如果返回结果中jdoc值为[{"a": [2, 3, 4]}],即可继续后续操作。

执行更新

PostgreSQL 支持直接通过下标访问jsonb数组元素,下标从0开始计数,使用->运算符提取的结果仍为jsonb类型,无需额外转义:

UPDATE api
SET jdoc = jdoc -> 0
WHERE id = 4;

结果验证

更新完成后执行查询确认修改效果:

SELECT id, jdoc FROM api WHERE id = 4;

返回的jdoc值即为预期的{"a": [2, 3, 4]}。

可选优化说明

如果需要避免数组为空时将jdoc设为null,可以给更新语句增加校验条件:

UPDATE api
SET jdoc = jdoc -> 0
WHERE id = 4
  AND jsonb_typeof(jdoc) = 'array'
  AND jsonb_array_length(jdoc) > 0;

如果需要批量处理所有符合「jdoc为仅含1个元素的jsonb数组」条件的行,调整WHERE条件即可:

UPDATE api
SET jdoc = jdoc -> 0
WHERE jsonb_typeof(jdoc) = 'array'
  AND jsonb_array_length(jdoc) = 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:54:03