PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Selecionando arrays em formato bem impresso em SQL


Existem várias maneiras. Uma maneira é converter o array em texto e dividi-lo com regexp_split_to_table () .
Esta função está presente no PostgreSQL 8.3 ou posterior .
SELECT regexp_split_to_table(trim(my_2d_intarr::text, '{}'), '},{');

Resultado:
0,0,0
1,1,1
2,2,2

Se você quiser os colchetes (talvez não queira?), adicione-os de volta assim:
SELECT '{' || regexp_split_to_table(trim(my_2d_intarr::text, '{}'), '},{') || '}';

Nosso resultado:
{0,0,0}
{1,1,1}
{2,2,2}

Alternativa:


Isso também deve funcionar com o PostgreSQL 8.2 ou talvez até antes, mas não testei isso.
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

Resultado:
{{0,0,0}}
{{1,1,1}}
{{2,2,2}}

(Você pode querer remover alguns colchetes ..)

Caso contrário, eu escreveria uma função plpgsql que percorre o array. Bastante fácil.

Há também o unnest() relacionado função, mas retorna uma linha por elemento base (inteiro neste caso), então não adianta aqui.

Uma maneira (rápida!) de gerar o resultado:COPY .