首頁 >資料庫 >mysql教程 >如何在 PostgreSQL 中壓縮兩個陣列以建立多維數組?

如何在 PostgreSQL 中壓縮兩個陣列以建立多維數組?

Linda Hamilton
Linda Hamilton原創
2025-01-04 18:28:40523瀏覽

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}

結果:

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;

zip()到多維數組要將數組的結果聚合為二維數組,需要一個名為array_agg_mult() 的自訂聚合函數:

{{a,d},{b,e},{c,f}}
然後,如下使用它: 結果:

以上是如何在 PostgreSQL 中壓縮兩個陣列以建立多維數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn