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

PostgreSQL 14.x:将TEXT类型列中的JSON数组转为CSV

在PostgreSQL 14.x中将TEXT类型JSON数组转为CSV格式

要把TEXT列中存储的JSON数组转换成逗号分隔的CSV格式,你可以结合PostgreSQL的JSON处理函数和字符串聚合函数来实现,以下是具体方法:

基础实现方法

假设你的表是mytable,存储JSON数组的TEXT列是mycolumn,可以用下面的SQL语句直接转换:

SELECT string_agg(elem, ',') AS csv_output
FROM mytable,
     json_array_text_elements(mycolumn::json) AS elem;

代码说明:

  • mycolumn::json:将TEXT类型的列强制转换为JSON类型,让PostgreSQL能够识别其为数组结构
  • json_array_text_elements():该函数会把JSON数组拆分成独立的行,每行对应数组中的一个文本元素
  • string_agg(elem, ','):将拆分后的所有元素用逗号连接,生成CSV格式的字符串

针对单条记录的转换

如果只需要转换特定条件的记录,比如根据id筛选:

SELECT string_agg(elem, ',') AS csv_output
FROM mytable,
     json_array_text_elements(mycolumn::json) AS elem
WHERE id = 1; -- 替换为你的实际筛选条件

处理含NULL值的数组

如果JSON数组中存在NULL元素,你可以添加过滤条件排除它们:

SELECT string_agg(elem, ',') AS csv_output
FROM mytable,
     json_array_text_elements(mycolumn::json) AS elem
WHERE elem IS NOT NULL;

使用JSONB的替代方案

如果你更倾向于使用JSONB类型(PostgreSQL推荐的JSON处理类型),可以用jsonb_array_text_elements函数,效果完全一致:

SELECT string_agg(elem, ',') AS csv_output
FROM mytable,
     jsonb_array_text_elements(mycolumn::jsonb) AS elem;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:52:09