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

PostgreSQL中如何将嵌套数组扁平化为一维数组

PostgreSQL嵌套数组扁平化实现方法

针对你给出的嵌套数组{{1,2},{3,4}},可以通过以下几种方式扁平化为一维数组{1,2,3,4}:

方法一:嵌套使用unnest函数结合子查询

这是最直接的原生方法,利用unnest逐层拆解数组:

SELECT array(SELECT unnest(unnest(array[array[1, 2], array[3, 4]])));

执行逻辑:

  • 外层unnest将顶级数组拆分为两个子数组{1,2}和{3,4}
  • 内层unnest将每个子数组拆分为单个元素
  • 最终用array()将所有元素重新组合为一维数组

方法二:借助JSONB函数转换

通过JSONB的数组处理能力实现扁平化,适合元素可转换为字符串的场景:

SELECT array_agg(elem::integer)
FROM jsonb_array_elements_text(to_jsonb(array[array[1, 2], array[3, 4]])) AS elem;

执行逻辑:

  • to_jsonb将嵌套数组转换为JSONB格式
  • jsonb_array_elements_text将JSONB数组拆解为包含子数组字符串的行
  • 把字符串转换为整数后,用array_agg聚合为一维数组

方法三:自定义可复用函数

如果需要频繁处理嵌套数组,可以封装一个自定义函数:

CREATE OR REPLACE FUNCTION flatten_nested_array(arr anyarray)
RETURNS anyarray AS $$
BEGIN
  RETURN array(SELECT unnest(unnest(arr)));
END;
$$ LANGUAGE plpgsql IMMUTABLE;

-- 调用函数示例
SELECT flatten_nested_array(array[array[1, 2], array[3, 4]]);

这个函数可以接收任意类型的二维嵌套数组,返回对应的一维数组,方便重复调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:55:20