Ada beberapa cara. Salah satu caranya adalah dengan melemparkan array ke teks dan membaginya dengan regexp_split_to_table ()
.
Fungsi ini ada di PostgreSQL 8.3 atau yang lebih baru .
SELECT regexp_split_to_table(trim(my_2d_intarr::text, '{}'), '},{');
Keluaran:
0,0,0
1,1,1
2,2,2
Jika Anda menginginkan tanda kurung (mungkin tidak?), tambahkan kembali seperti ini:
SELECT '{' || regexp_split_to_table(trim(my_2d_intarr::text, '{}'), '},{') || '}';
Hasil Kami:
{0,0,0}
{1,1,1}
{2,2,2}
Alternatif:
Ini juga harus bekerja dengan PostgreSQL 8.2 atau mungkin lebih awal, tapi saya tidak mengujinya.
SELECT my_2d_int_arr_var[x:x][1:3]
FROM (SELECT generate_series(1, array_upper(my_2d_intarr, 1), 1)::int4 AS x)) x
Keluaran:
{{0,0,0}}
{{1,1,1}}
{{2,2,2}}
(Anda mungkin ingin menghapus beberapa tanda kurung kurawal ..)
Lain, saya akan menulis fungsi plpgsql yang loop melalui array. Cukup mudah.
Ada juga unnest()
terkait
fungsi, tetapi mengembalikan baris per elemen dasar (dalam hal ini bilangan bulat), jadi tidak ada gunanya di sini.
Satu (cepat!) cara untuk menampilkan hasilnya:COPY
.