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

PostgreSQL中如何将含对象的JSON数组转换为JSONB对象?

在PostgreSQL中将包含对象的JSON数组转换为JSONB对象

针对你的场景,要把test表中data字段的JSON数组(仅包含单个对象)转换为JSONB对象,可通过以下方法实现:

方法1:查询时临时转换

如果仅需要在查询结果中得到单个JSONB对象,无需修改表内存储的数据,直接用数组索引提取元素并转换类型即可:

SELECT 
  id,
  data::jsonb -> 0 AS data
FROM test;
  • data::jsonb:将原json类型字段转换为jsonb类型
  • -> 0:提取JSON数组的第一个元素(PostgreSQL中JSON数组索引从0开始)

方法2:永久修改表内数据

如果需要把表中存储的内容直接改为JSONB对象,可分两步操作:

  1. 将data字段的类型改为jsonb:
ALTER TABLE test ALTER COLUMN data TYPE jsonb USING data::jsonb;
  1. 提取数组中的对象覆盖原字段值:
UPDATE test
SET data = data -> 0;

执行完成后,查询表即可得到你期望的结果:

iddata
1{"crud": "read", "description": "empdata", "info": {"empid": {"$in": [1, 2, 3]}}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 16:10:03