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

SQL如何将text[]数组列展开为单个元素行并合并所有结果

SQL数组列逐行扁平化实现方案

针对数组类型列展开合并为单结果集的需求,直接通过UNNEST函数配合表查询即可实现,数据库会自动完成逐行的数组展开映射,无需手动逐行处理。

基础实现(仅返回展开后的数组元素)

针对你给出的测试表结构,直接运行以下查询即可得到预期的5行结果:

SELECT UNNEST(col2) AS flattened_text
FROM arrs
-- 自动过滤数组列为NULL的记录
WHERE col2 IS NOT NULL;

运行返回结果依次为a/b/c/d/e,完全匹配预期。针对你举例的3条含NULL数组的测试数据,该语句会自动跳过NULL数组行,最终返回1、2、3、1、4、5共6条结果。

关联原表字段的扩展写法

如果需要保留展开元素和原表记录的关联关系(比如同步获取原表的col1值),可以用LATERAL交叉连接的写法,逻辑更清晰:

SELECT
  t.col1,
  arr_item AS flattened_text
FROM arrs t
CROSS JOIN LATERAL UNNEST(t.col2) AS arr_item
WHERE t.col2 IS NOT NULL;

注意说明

  • 该写法兼容PostgreSQL、BigQuery等支持标准数组类型与UNNEST函数的SQL引擎,你之前了解到的BigQuery UNNEST 逐行展开逻辑和上述写法完全一致,不需要额外写循环做逐行映射,数据库引擎会自动完成逐行展开的计算。
  • 你提到的SQLite测试环境本身不支持原生text[]数组类型,上述原生数组解法无法在SQLite中直接运行,如果是SQLite环境需要先对字符串格式存储的数组做自定义拆分处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 07:34:23