PostgreSQL には、配列を効率的に結合するためのさまざまなオプションが用意されており、複雑なデータを操作できるようになります。
同じ長さの 2 つの配列を結合するには、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 = '{}' );
Usage:
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;
Result:
{{a,d},{b,e},{c,f}}
Alternatively を提供します。 、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 中国語 Web サイトの他の関連記事を参照してください。