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 中組合數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!