PostgreSQL 提供了各種高效組合數組的選項,使得操作複雜資料成為可能輕鬆建構結構。
要組合兩個長度相等的數組,可以使用unnest() 函數和ARRAY[] 建構子:
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}
用於聚合配對將元素合併到多維數組中,PostgreSQL 提供了自定義聚合函數array_agg_mult():
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;
結果:
{{a,d},{b,e},{c,f}}
或者, zip2() 函數可以建立為包裝器array_agg_mult():
CREATE OR REPLACE FUNCTION zip2(anyarray, anyarray) RETURNS SETOF anyarray LANGUAGE SQL AS $func$ SELECT array_agg_mult(ARRAY[ARRAY[a,b]]) FROM (SELECT unnest() AS a, unnest() AS b) x; $func$
用法:
SELECT zip2('{a,b,c}'::text[], '{d,e,f}'::text[]);
結果:
{{a,d},{b,e},{c,f}}
在Postgres在9.5及更高版本中,array_agg(數組表達式)函數可以直接將數組組合成多維數組,相較於自訂聚合函數提供了更有效率的解決方案。它的用法與 array_agg_mult() 函數類似。
以上是PostgreSQL中如何有效率地將陣列組合成多維數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!