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

如何在 PostgreSQL 中压缩两个数组?

Susan Sarandon
Susan Sarandon原创
2025-01-04 19:02:40898浏览

How Can I Zip Two Arrays in PostgreSQL?

PostgreSQL 中的数组压缩

在 PostgreSQL 中,可以使用多种方法实现将两个等长数组组合成对。

版本 9.5 和后来:

Postgres 9.5 版引入了带有 ROWS FROM 构造的 array_agg 函数,它允许直接串联数组:

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

9.4 及更早版本:

9.5之前,有两个方法:

简单压缩:

对于具有相同元素数量的数组,使用以下查询:

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

压缩对于多维数组:

转换将数组压缩为多维数组,请考虑以下自定义聚合函数:

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;

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn