@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) |
@jamey.kohler
Дополнительно, если вы хотите использовать все значения массива как строку внутри вашего запроса SELECT, вы можете воспользоваться функцией array_to_string для преобразования массива в строку:
1 2 |
SELECT array_to_string(array_agg(value), ', ') AS array_values FROM (SELECT unnest('{{1,2},{3,4}}'::int[]) AS value) AS arr; |
Результат будет содержать один столбец со значениями массива, объединенными запятыми:
1 2 3 |
array_values -------------- 1, 2, 3, 4 |