PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Wybieranie tablic w ładnie wydrukowanym formacie w SQL

Jest kilka sposobów. Jednym ze sposobów jest rzutowanie tablicy na tekst i podzielenie go za pomocą regexp_split_to_table () .
Ta funkcja jest obecna w PostgreSQL 8.3 lub nowszym .

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

Wyjście:

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

Jeśli chcesz nawiasy zamykające (może nie?), dodaj je z powrotem w ten sposób:

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

Nasze dane:

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

Alternatywnie:

Powinno to również działać z PostgreSQL 8.2 a może nawet wcześniej, ale tego nie testowałem.

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

Wyjście:

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

(Możesz usunąć kilka nawiasów klamrowych ..)

W przeciwnym razie napisałbym funkcję plpgsql, która przechodzi przez tablicę. Dość łatwe.

Istnieje również powiązany unnest() funkcji, ale zwraca wiersz na element bazowy (w tym przypadku liczbę całkowitą), więc nie ma to tutaj zastosowania.

Jeden (szybki!) sposób na wyprowadzenie wyniku:COPY .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co dokładnie robi pg_escape_string?

  2. fe_sendauth:nie podano hasła

  3. Konwertuj django RawQuerySet na Queryset

  4. Postgres:filtrowanie wyników za pomocą ARRAY_AGG i HAVING (zamiast WHERE)

  5. Opisać zestaw wyników w PostgreSQL?