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

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

Linda Hamilton
發布: 2025-01-04 18:28:40
原創
551 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板