Existuje několik způsobů. Jedním ze způsobů je přenést pole na text a rozdělit jej pomocí regexp_split_to_table ()
.
Tato funkce je přítomna v PostgreSQL 8.3 nebo novějším .
SELECT regexp_split_to_table(trim(my_2d_intarr::text, '{}'), '},{');
Výstup:
0,0,0
1,1,1
2,2,2
Pokud chcete uzavírací závorky (možná ne?), přidejte je zpět takto:
SELECT '{' || regexp_split_to_table(trim(my_2d_intarr::text, '{}'), '},{') || '}';
Náš výstup:
{0,0,0}
{1,1,1}
{2,2,2}
Alternativa:
To by mělo fungovat také s PostgreSQL 8.2 nebo možná ještě dříve, ale to jsem netestoval.
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
Výstup:
{{0,0,0}}
{{1,1,1}}
{{2,2,2}}
(Možná budete chtít odstranit některé složené závorky ..)
Jinak bych napsal funkci plpgsql, která prochází polem. Docela snadné.
Existuje také související unnest()
funkce, ale vrací řádek na základní prvek (v tomto případě celé číslo), takže zde není k ničemu.
Jeden (rychlý!) způsob výstupu výsledku:COPY
.