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

如何编写PSQL查询将JSON对象的值转换为数组形式?

将JSON对象值转为单元素数组的PostgreSQL实现

需求回顾

现有表结构及数据:

idtags
1{"key1" : "val1", "key2" : "val2"}

需要转换为:

idtags
1{"key1" : ["val1"], "key2" : ["val2"]}

解决方案

1. 查询转换结果

若仅需查看转换后的数据,执行以下SQL:

SELECT 
    id,
    json_object_agg(key, json_build_array(value)) AS tags
FROM 
    your_table,
    json_each_text(tags)
GROUP BY 
    id;

2. 永久更新表数据

若要修改表中tags字段的实际存储,使用更新语句:

UPDATE your_table
SET tags = (
    SELECT json_object_agg(key, json_build_array(value))
    FROM json_each_text(tags)
);

关键函数说明

  • json_each_text(tags):把JSON对象拆分为键值对行,每行包含key(键名)和value(字符串类型的值)。
  • json_build_array(value):将单个字符串值包装成JSON数组。
  • json_object_agg(key, ...):将处理后的键值对重新聚合为JSON对象,此时每个值已转为数组格式。

提示:如果tags字段类型是jsonb,只需将所有json_前缀替换为jsonb_(如jsonb_each_text、jsonb_object_agg)即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:05:14