ホームページ >データベース >mysql チュートリアル >PostgreSQL で配列を結合するにはどうすればよいですか?
PostgreSQL には、配列を操作するためのさまざまな方法が用意されています。一般的な操作の 1 つは、同じ長さの 2 つの配列を要素のペアに結合することです。この記事では、PostgreSQL のバージョンと特定の使用例を考慮して、このタスクを達成するためのさまざまなアプローチを検討します。
PostgreSQL 9.5 以降
PostgreSQL 9.5 では array_agg(配列式) が導入され、複数の配列を連結できるようになります。 1 つの高次元配列に変換されます。この機能により、配列結合タスクが簡素化され、カスタム集計関数が不要になります。
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;
次の関数は、任意の配列を圧縮するための一般化されたアプローチを提供します。 type:
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 中国語 Web サイトの他の関連記事を参照してください。