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对象,可分两步操作:
- 将
data字段的类型改为jsonb:
ALTER TABLE test ALTER COLUMN data TYPE jsonb USING data::jsonb;
- 提取数组中的对象覆盖原字段值:
UPDATE test SET data = data -> 0;
执行完成后,查询表即可得到你期望的结果:
| id | data |
|---|---|
| 1 | {"crud": "read", "description": "empdata", "info": {"empid": {"$in": [1, 2, 3]}}} |
内容的提问来源于stack exchange,提问作者Madhu
相关产品推荐
相关产品推荐

