PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Избиране на масиви в добре отпечатан формат в SQL

Има няколко начина. Един от начините е да прехвърлите масива към текст и да го разделите с regexp_split_to_table () .
Тази функция присъства в PostgreSQL 8.3 или по-нова версия .

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

Изход:

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

Ако искате ограждащите скоби (може би не искате?), добавете ги обратно по този начин:

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

Изход:

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

Алтернатива:

Това трябва да работи и с PostgreSQL 8.2 или може би дори по-рано, но не съм го тествал.

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

Изход:

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

(Може да искате да премахнете някои фигурни скоби ..)

В противен случай бих написал plpgsql функция, която преминава през масива. Доста лесно.

Има и свързаното unnest() функция, но връща ред за основен елемент (цяло число в този случай), така че не е полезно тук.

Един (бърз!) начин за извеждане на резултата: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. Как да не създавате разширения PostgreSQL 9.0 на RPM платформи

  2. PostgreSQL - как да подобрим тази заявка/индекс

  3. Как да конфигурирате PostgreSQL да приема всички входящи връзки

  4. Възстановете отдалечен дъмп към RDS

  5. Използване на Postgresql с Grails:Липсваща последователност или таблица:hibernate_sequence