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中文网其他相关文章!