ホームページ >データベース >mysql チュートリアル >PostgreSQL で 2 つの配列を圧縮して多次元配列を作成する方法

PostgreSQL で 2 つの配列を圧縮して多次元配列を作成する方法

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-04 18:28:40566ブラウズ

How to Zip Two Arrays in PostgreSQL to Create a Multi-Dimensional Array?

Postgres: "zip()" 関数を使用して 2 つの配列を結合する

Postgres 関数

2 つの配列を 1 つに結合するにはいくつかの方法がありますPostgres 関数を使用した多次元配列:

Postgres 9.5 以降:

  • array_agg(配列式): すべての入力配列を 1 つ高い次元の配列に連結します。

Postgres 9.4:

  • からの行または unnest(): 複数の配列を並行してネスト解除し、異なる長さの配列を許可します。

Postgres 9.3 以前:

  • zip(): 2 つの配列のネストを同時に解除し、新しい配列のセットを作成するカスタム関数arrays.

Simple zip() Function

Postgres 9.3 以前の次の例を考えてみましょう:

SELECT ARRAY[a,b] AS ab
FROM  (
   SELECT unnest('{a,b,c}'::text[]) AS a
        , unnest('{d,e,f}'::text[]) AS b
    ) x;

Result:

  ab
-------
 {a,d}
 {b,e}
 {c,f}

zip() から多次元へArray

結果の配列セットを 2 次元配列に集約するには、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}}

以上がPostgreSQL で 2 つの配列を圧縮して多次元配列を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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