Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggabungkan Tatasusunan ke dalam Tatasusunan Berbilang Dimensi dengan Cekap dalam PostgreSQL?

Bagaimanakah Saya Boleh Menggabungkan Tatasusunan ke dalam Tatasusunan Berbilang Dimensi dengan Cekap dalam PostgreSQL?

Barbara Streisand
Lepaskan: 2025-01-06 01:11:39
asal
751 orang telah melayarinya

How Can I Efficiently Combine Arrays into Multi-Dimensional Arrays in PostgreSQL?

Menggabungkan Tatasusunan menjadi Tatasusunan Berbilang Dimensi dalam PostgreSQL

Pengenalan

PostgreSQL menyediakan pelbagai pilihan untuk menggabungkan tatasusunan dengan cekap, menjadikannya mungkin untuk memanipulasi data yang kompleks struktur dengan mudah.

Zip ringkas() Fungsi (Turutan Panjang Sama)

Untuk menggabungkan dua tatasusunan yang sama panjang, anda boleh menggunakan fungsi unnest() bersama-sama dengan pembina ARRAY[]:

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

Hasil:

  ab
-------
{a,d}
{b,e}
{c,f}
Salin selepas log masuk

Fungsi zip() Mengagregatkan kepada Berbilang Dimensi Tatasusunan

Untuk mengagregatkan elemen berpasangan ke dalam tatasusunan berbilang dimensi, PostgreSQL menawarkan fungsi agregat tersuai array_agg_mult():

CREATE AGGREGATE array_agg_mult (anyarray) (
    SFUNC = array_cat,
    STYPE = anyarray,
    INITCOND = '{}'
);
Salin selepas log masuk

Penggunaan:

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;
Salin selepas log masuk

Hasil:

{{a,d},{b,e},{c,f}}
Salin selepas log masuk
Salin selepas log masuk

Sebagai alternatif, fungsi zip2() boleh dibuat sebagai pembalut di sekeliling 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$
Salin selepas log masuk

Penggunaan:

SELECT zip2('{a,b,c}'::text[], '{d,e,f}'::text[]);
Salin selepas log masuk

Hasil:

{{a,d},{b,e},{c,f}}
Salin selepas log masuk
Salin selepas log masuk

Postgres 9.5 (array_agg (ungkapan tatasusunan))

Dalam Postgres 9.5 dan kemudian, fungsi array_agg(ungkapan tatasusunan) boleh secara langsung menggabungkan tatasusunan menjadi tatasusunan berbilang dimensi, memberikan penyelesaian yang lebih cekap berbanding dengan fungsi agregat tersuai. Penggunaannya serupa dengan fungsi array_agg_mult().

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Tatasusunan ke dalam Tatasusunan Berbilang Dimensi dengan Cekap dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan