Jadual Kandungan
Menggabungkan Tatasusunan dalam PostgreSQL: Panduan Komprehensif
Pengenalan
Mengzip Tatasusunan untuk Output Satu Dimensi
Mengzip Tatasusunan untuk Output Berbilang Dimensi
Fungsi Zip Umum
Senario Penggunaan
Kesimpulan
Rumah pangkalan data tutorial mysql Bagaimanakah saya Boleh Menggabungkan Tatasusunan dalam PostgreSQL?

Bagaimanakah saya Boleh Menggabungkan Tatasusunan dalam PostgreSQL?

Jan 05, 2025 pm 01:59 PM

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

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

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

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

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Kurangkan penggunaan memori MySQL di Docker Kurangkan penggunaan memori MySQL di Docker Mar 04, 2025 pm 03:52 PM

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table? Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table? Mar 19, 2025 pm 03:51 PM

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama Mar 04, 2025 pm 04:01 PM

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Apa itu SQLite? Gambaran Keseluruhan Komprehensif Apa itu SQLite? Gambaran Keseluruhan Komprehensif Mar 04, 2025 pm 03:55 PM

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin) Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin) Mar 04, 2025 pm 03:54 PM

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah Mar 04, 2025 pm 03:49 PM

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)? Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)? Mar 18, 2025 pm 12:00 PM

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)?

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL? Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL? Mar 18, 2025 pm 12:01 PM

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?

See all articles