Как в select перебрать двумерный массив в postgresql?

Пользователь

от jamey.kohler , в категории: SQL , 10 месяцев назад

Как в select перебрать двумерный массив в postgresql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от stephania , 10 месяцев назад

@jamey.kohler 

В PostgreSQL можно использовать функцию unnest, которая преобразует массив в отдельные строки, чтобы его можно было использовать в конструкции FROM:

1
2
SELECT *
FROM unnest('{{1,2},{3,4}}'::int[]);


Результат будет иметь два столбца (unnest и его порядковый номер), и четыре строки с парами значений:

1
2
3
4
5
6
7
 unnest | unnest 
--------+--------
      1 |      1
      2 |      2
      3 |      1
      4 |      2
(4 rows)


Чтобы использовать двумерный массив в конструкции SELECT, можно использовать вложенную компоновку функций unnest:

1
2
3
4
5
SELECT x, y, x*y
FROM (
    SELECT unnest('{{1,2},{3,4}}'::int[]) AS x,
           unnest('{{5,6},{7,8}}'::int[]) AS y
) AS arr;


Результат будет иметь три столбца (x, y и их произведение) и четыре строки с парами значений:

1
2
3
4
5
6
7
 x | y | ?column? 
---+---+----------
 1 | 5 |        5
 2 | 6 |       12
 3 | 7 |       21
 4 | 8 |       32
(4 rows)