ホームページ >データベース >mysql チュートリアル >PostgreSQL で配列を結合するにはどうすればよいですか?

PostgreSQL で配列を結合するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-05 13:59:45602ブラウズ

How Can I Combine Arrays in PostgreSQL?

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;

汎用 Zip 関数

次の関数は、任意の配列を圧縮するための一般化されたアプローチを提供します。 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$;

使用シナリオ

この記事で紹介する例では、配列を結合するためのさまざまなシナリオを紹介します:

  • 単純な圧縮:配列を要素のペアのセットに結合します (単次元
  • 多次元ジップ: 配列を 2 次元配列に結合します。
  • 一般化ジップ: 任意の型の配列を結合して、のセットarrays.

結論

PostgreSQL には、バージョンと必要な出力形式に応じて、配列を組み合わせるための複数のオプションが用意されています。この記事では、利用可能なアプローチを包括的に説明しており、特定のニーズに最も適した方法を選択できるようにしています。

以上がPostgreSQL で配列を結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。