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

PostgreSQL拆分列数据去重后转换为行数据的实现方案问询

PostgreSQL拆分逗号分隔列并去重转行实现方案

该需求完全可以实现,使用PostgreSQL内置函数即可完成,无需额外自定义逻辑。

实现思路

  • 先用string_to_array函数将逗号分隔的字符串列拆分为数组
  • 再用unnest函数将数组元素展开为多行数据
  • 最后通过去重逻辑去掉重复值,两种常用实现方式如下:

实现代码

方式1:展开后整体去重(兼容性更好,全版本支持)

SELECT DISTINCT
  Id,
  unnest(string_to_array(ColumnData, ',')) AS ColumnData
FROM TableA
ORDER BY ColumnData;

方式2:先对数组去重再展开(性能更优,PostgreSQL 9.4及以上版本支持)

SELECT
  Id,
  unnest(array_unique(string_to_array(ColumnData, ','))) AS ColumnData
FROM TableA
ORDER BY ColumnData;

说明

两种方式针对你提供的示例数据,都可以得到你期望的输出结果。如果你的数据量较大,更推荐使用第二种方式,先去重数组元素再展开,减少后续计算量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:06:04