PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Memilih data ke dalam array Postgres

Anda tidak dapat menggunakan array_agg() untuk menghasilkan array multi-dimensi, setidaknya tidak hingga PostgreSQL 9.4.
(Tapi Postgres 9.5 yang akan datang mengirimkan varian baru array_agg() itu bisa!)

Apa yang Anda dapatkan dari kueri @Matt Ball adalah larik catatan (the_table[] ).

Array hanya dapat menampung elemen dengan tipe dasar yang sama. Anda jelas memiliki tipe nomor dan string. Ubah semua kolom (yang belum) menjadi text untuk membuatnya bekerja.

Anda dapat membuat fungsi agregat untuk ini seperti yang saya tunjukkan kepada Anda di sini sebelumnya.

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

Telepon:

SELECT array_agg_mult(ARRAY[ARRAY[name, id::text, url]]) AS tbl_mult_arr
FROM   tbl;

Perhatikan ARRAY[] tambahan layer untuk membuatnya menjadi array multidimensi (tepatnya 2 dimensi).

Demo instan:

WITH tbl(id, txt) AS (
    VALUES
      (1::int, 'foo'::text)
     ,(2,      'bar')
     ,(3,      '}b",') -- txt has meta-characters
    )
    , x AS (
    SELECT array_agg_mult(ARRAY[ARRAY[id::text,txt]]) AS t
    FROM   tbl
    )
SELECT *, t[1][3] AS arr_element_1_1, t[3][4] AS arr_element_3_2
FROM   x;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Peningkatan Pelaporan Kemajuan di PostgreSQL 12

  2. Bagaimana Anda mencetak hasil kueri PostgreSQL dalam format CSV atau TSV dari baris perintah?

  3. Skenario Kegagalan PostgreSQL Paling Umum

  4. memulai postgresql dan pgadmin di windows tanpa instalasi

  5. Berikan hak istimewa pada tabel mendatang di PostgreSQL?