PostgreSQL menyediakan pelbagai pilihan untuk menggabungkan tatasusunan dengan cekap, menjadikannya mungkin untuk memanipulasi data yang kompleks struktur dengan mudah.
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;
Hasil:
ab ------- {a,d} {b,e} {c,f}
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 = '{}' );
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;
Hasil:
{{a,d},{b,e},{c,f}}
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$
Penggunaan:
SELECT zip2('{a,b,c}'::text[], '{d,e,f}'::text[]);
Hasil:
{{a,d},{b,e},{c,f}}
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!