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

PostgreSQL如何将数组列元素拆分生成单独行?

PostgreSQL:拆分数组列为多行并保留原数据

这事儿在PostgreSQL里用unnest()函数就能直接搞定,完全匹配你要的结果!

核心思路就是用unnest()把数组列的每个元素拆成单独的行,同时保留原行的所有其他字段。直接上SQL:

SELECT
    a,
    b,
    unnest(b) AS c
FROM your_table;

验证一下效果

先创建测试表并插入你给的数据:

CREATE TABLE your_table (a varchar(3), b text[]);
INSERT INTO your_table VALUES
('001', '{x,y,z}'),
('002', '{x,s}');

执行上面的查询后,输出结果就是你想要的:

a | b | c
-----+----------+---
001 | {x,y,z} | x
001 | {x,y,z} | y
001 | {x,y,z} | z
002 | {x,s} | x
002 | {x,s} | s

补充说明

  • unnest()是PostgreSQL专门用来展开数组的内置函数,它会把数组中的每个元素对应生成一行,同时自动关联原行的a和完整的b数组,哪怕a字段不唯一也能正确匹配。
  • 这个写法在PostgreSQL 9.3及以上版本都能正常工作,性能也很可靠,适合处理这类数组拆分需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:06:54