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

Array multidimensi PostgreSQL

Postgres array elemen selalu elemen dasar , yaitu skalar nilai-nilai. Sub-array bukan "elemen" di Postgres. Irisan array mempertahankan dimensi aslinya.

Anda dapat mengekstrak elemen dasar , yang merupakan nilai dari tipe data elemen skalar.
Atau Anda dapat mengekstrak irisan array , yang mempertahankan tipe data larik asli dan juga dimensi larik asli.

Ide Anda untuk mengambil sub-array sebagai "elemen" akan bertentangan dengan itu dan tidak diterapkan.

Manual mungkin lebih jelas dalam penjelasannya. Tapi setidaknya kita bisa menemukan:

Contoh pertama Anda mencoba mereferensikan elemen dasar, yang tidak ditemukan (Anda memerlukan dua indeks array dalam array 2-D). Jadi Postgres mengembalikan NULL.
Contoh ke-3 Anda hanya membungkus NULL yang dihasilkan dalam array baru.

Untuk meratakan irisan array (jadikan array 1-D) Anda dapat unnest() dan masukkan set yang dihasilkan ke ARRAY konstruktor . Baik dalam subkueri berkorelasi atau dalam LATERAL bergabung (memerlukan hal 9.3+). Mendemonstrasikan keduanya:

SELECT s.col[2:2][2:3] AS slice_arr
     , x.lateral_arr
     , ARRAY(SELECT unnest(s.col[2:2][2:3])) AS corr_arr
FROM  (SELECT ARRAY[[1,2,3],[4,5,6]] AS col) s
     , LATERAL (SELECT ARRAY(SELECT * FROM unnest(s.col[2:2][2:3])) AS lateral_arr) x;

Dan pastikan untuk membaca versi manual saat ini . referensi Anda menunjuk ke Postgres 9.1, tetapi kemungkinan Anda benar-benar menggunakan Postgres 9.4.

Terkait:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tag string pencocokan kueri

  2. Bergabunglah dengan kueri hitungan di generate_series() dan ambil nilai Null sebagai '0'

  3. Rails:PG::UndefinedTable:ERROR:relasi ... tidak ada

  4. Fungsi agregat tidak diperbolehkan dalam kueri rekursif. Apakah ada cara alternatif untuk menulis kueri ini?

  5. Fungsi Postgres untuk menyisipkan beberapa record dalam dua tabel