首页 > 数据库 > mysql教程 > 如何在 PostgreSQL 中压缩两个数组以创建多维数组?

如何在 PostgreSQL 中压缩两个数组以创建多维数组?

Linda Hamilton
发布: 2025-01-04 18:28:40
原创
553 人浏览过

How to Zip Two Arrays in PostgreSQL to Create a Multi-Dimensional Array?

Postgres:使用“zip()”函数组合两个数组

Postgres 函数

有多种方法可以将两个数组组合成一个数组使用 Postgres 函数的多维数组:

Postgres 9.5 或更高版本:

  • array_agg(数组表达式):将所有输入数组连接成一个更高维度的数组。

Postgres 9.4:

  • 行来自 或unnest():并行取消嵌套多个数组,允许不同长度的数组。

Postgres 9.3 或更早版本:

  • zip(): A自定义函数,同时取消两个数组的嵌套,创建一组新的数组。

简单的 zip() 函数

考虑 Postgres 9.3 或更早版本的以下示例:

SELECT ARRAY[a,b] AS ab
FROM  (
   SELECT unnest('{a,b,c}'::text[]) AS a
        , unnest('{d,e,f}'::text[]) AS b
    ) x;
登录后复制

结果:

  ab
-------
 {a,d}
 {b,e}
 {c,f}
登录后复制

zip() 到多维数组

要将数组的结果聚合为二维数组,需要一个名为 array_agg_mult() 的自定义聚合函数:

CREATE AGGREGATE array_agg_mult (anyarray) (
   SFUNC    = array_cat
 , STYPE    = anyarray
 , INITCOND = '{}'
);
登录后复制

然后,按如下方式使用它:

SELECT array_agg_mult(ARRAY[ARRAY[a,b]]) AS ab
FROM  (
   SELECT unnest('{a,b,c}'::text[]) AS a
        , unnest('{d,e,f}'::text[]) AS b
    ) x;
登录后复制

结果:

{{a,d},{b,e},{c,f}}
登录后复制

以上是如何在 PostgreSQL 中压缩两个数组以创建多维数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板