PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Sélection de tableaux dans un format bien imprimé en SQL

Il existe plusieurs façons. Une façon consiste à convertir le tableau en texte et à le diviser avec regexp_split_to_table () .
Cette fonction est présente dans PostgreSQL 8.3 ou version ultérieure .

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

Sortie :

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

Si vous voulez les parenthèses (peut-être pas ?), rajoutez-les comme ceci :

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

Notre sortie :

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

Alternative :

Cela devrait également fonctionner avec PostgreSQL 8.2 ou peut-être même plus tôt, mais je n'ai pas testé cela.

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

Sortie :

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

(Vous voudrez peut-être supprimer quelques accolades ..)

Sinon, j'écrirais une fonction plpgsql qui parcourt le tableau. Assez facile.

Il y a aussi le lien unnest() fonction, mais elle renvoie une ligne par élément de base (entier dans ce cas), donc elle ne sert à rien ici.

Une manière (rapide !) d'afficher le résultat :COPY .