sql >> Base de Datos >  >> RDS >> PostgreSQL

Selección de matrices en formato bien impreso en SQL

Hay varias formas. Una forma es convertir la matriz en texto y dividirla con regexp_split_to_table () .
Esta función está presente en PostgreSQL 8.3 o posterior .

SELECT regexp_split_to_table(trim(my_2d_intarr::text, '{}'), '},{');

Salida:

0,0,0
1,1,1
2,2,2

Si desea los corchetes adjuntos (¿tal vez no?), agréguelos de nuevo así:

SELECT '{' || regexp_split_to_table(trim(my_2d_intarr::text, '{}'), '},{') || '}';

Resultado:

{0,0,0}
{1,1,1}
{2,2,2}

Alternativa:

Esto también debería funcionar con PostgreSQL 8.2 o tal vez incluso antes, pero no probé eso.

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

Salida:

{{0,0,0}}
{{1,1,1}}
{{2,2,2}}

(Es posible que desee eliminar algunos corchetes...)

De lo contrario, escribiría una función plpgsql que recorre la matriz. Bastante fácil.

También está el unnest() función, pero devuelve una fila por elemento base (entero en este caso), por lo que no sirve de nada aquí.

Una forma (¡rápida!) de mostrar el resultado:COPY .