首頁 > 資料庫 > mysql教程 > 如何在 PostgreSQL 中組合數組?

如何在 PostgreSQL 中組合數組?

Susan Sarandon
發布: 2025-01-05 13:59:45
原創
576 人瀏覽過

How Can I Combine Arrays in PostgreSQL?

在 PostgreSQL 中組合數組:綜合指南

簡介

PostgreSQL 提供了各種操作數組的方法。一個常見的操作是將兩個長度相等的陣列組合成元素對。本文探討了實現此任務的不同方法,考慮了 PostgreSQL 版本和特定用例。

壓縮數組以實現單維輸出

PostgreSQL 9.5 或更高版本

PostgreSQL 9.5 引入了array_agg(>

PostgreSQL 9.5 引入了array_agg(>將多個數組連接成一個高維數組。此功能簡化了陣列組合任務,無需自訂聚合函數。
SELECT array_agg(ARRAY[a, b]) AS ab
FROM unnest('{a,b,c}'::text[]) AS a, unnest('{d,e,f}'::text[]) AS b;
登入後複製

PostgreSQL 9.4

在 PostgreSQL 9.5 之前,另一種方法涉及使用 unnest( ) 和 ROWS FROM.
SELECT ARRAY[a, b] AS ab
FROM unnest('{a,b,c}'::text[], '{d,e,f}'::text[])
AS tmp(a, b);
登入後複製

多維數組壓縮輸出

對於需要將陣列組合成多維數組的情況,需要自訂聚合函數。
CREATE OR REPLACE FUNCTION array_agg_mult(anyarray)
RETURNS SETOF anyarray LANGUAGE SQL AS
$func$
  SELECT ARRAY[ARRAY[a, b]]
  FROM unnest() AS unnest1(a, b);
$func$;
登入後複製
SELECT array_agg_mult(ARRAY[ARRAY[a, b]]) AS ab
FROM unnest('{a,b,c}'::text[]) AS a, unnest('{d,e,f}'::text[]) AS b;
登入後複製

廣義 Zip函數

以下函數提供了壓縮任何類型數組的通用方法:
CREATE OR REPLACE FUNCTION zip(anyarray, anyarray)
RETURNS SETOF anyarray LANGUAGE SQL AS
$func$
  SELECT array_agg_mult(ARRAY[ARRAY[a, b]])
  FROM unnest() AS unnest1(a, b)
  JOIN unnest() AS unnest2(a, b)
    ON true;
$func$;
登入後複製

用法場景

本文中提供的範例展示了組合陣列的不同場景:
  • 簡單壓縮:
  • 將陣列組合成一組元素對(單-維度輸出)。
  • 多維壓縮:
  • 將陣列組合成二維陣列。
  • 廣義壓縮:
  • 組合任意類型的陣列並傳回一組陣列。

結論

PostgreSQL 提供了多種組合陣列的選項,取決於版本和所需的輸出格式。本文全面介紹了可用的方法,使您能夠選擇最適合您的特定需求的方法。

以上是如何在 PostgreSQL 中組合數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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