Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya Boleh Menggabungkan Tatasusunan dalam PostgreSQL?

Bagaimanakah saya Boleh Menggabungkan Tatasusunan dalam PostgreSQL?

Susan Sarandon
Susan Sarandonasal
2025-01-05 13:59:45617semak imbas

How Can I Combine Arrays in PostgreSQL?

Menggabungkan Tatasusunan dalam PostgreSQL: Panduan Komprehensif

Pengenalan

PostgreSQL menyediakan pelbagai kaedah untuk memanipulasi tatasusunan. Satu operasi biasa adalah menggabungkan dua tatasusunan yang sama panjang menjadi pasangan elemen. Artikel ini meneroka pendekatan yang berbeza untuk mencapai tugas ini, mempertimbangkan versi PostgreSQL dan kes penggunaan khusus.

Mengzip Tatasusunan untuk Output Satu Dimensi

PostgreSQL 9.5 atau lebih baru

PostgreSQL 9.5 memperkenalkan array_agg(ungkapan tatasusunan), membolehkan anda menggabungkan berbilang tatasusunan menjadi satu tatasusunan berdimensi lebih tinggi. Ciri ini memudahkan tugas gabungan tatasusunan, menghapuskan keperluan untuk fungsi agregat tersuai.

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

Sebelum PostgreSQL 9.5, pendekatan alternatif melibatkan penggunaan unnest( ) dengan ROWS DARI.

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

Mengzip Tatasusunan untuk Output Berbilang Dimensi

Untuk kes di mana anda perlu menggabungkan tatasusunan menjadi tatasusunan berbilang dimensi, fungsi agregat tersuai diperlukan.

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;

Fungsi Zip Umum

Fungsi berikut menyediakan pendekatan umum untuk mengezip tatasusunan apa-apa jenis:

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$;

Senario Penggunaan

Contoh yang dibentangkan dalam artikel ini mempamerkan senario berbeza untuk menggabungkan tatasusunan:

  • Mudah Mengezip: Menggabungkan tatasusunan menjadi satu set pasangan elemen (dimensi tunggal output).
  • Pengzip Berbilang Dimensi: Menggabungkan tatasusunan menjadi tatasusunan 2 dimensi.
  • Pengzip Umum: Menggabungkan tatasusunan dari sebarang jenis dan mengembalikan a set daripada tatasusunan.

Kesimpulan

PostgreSQL menyediakan berbilang pilihan untuk menggabungkan tatasusunan, bergantung pada versi dan format output yang diingini. Artikel ini telah merangkumi pendekatan yang tersedia secara menyeluruh, membolehkan anda memilih kaedah yang paling sesuai untuk keperluan khusus anda.

Atas ialah kandungan terperinci Bagaimanakah saya Boleh Menggabungkan Tatasusunan dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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