2

考虑以下情况

Table : tab1
id    serial      primary key
arr   int[]

现在我想选择arr.

SELECT * FROM (SELECT arr FROM tab1) AS tab2

我需要在数组中进行某种迭代。

例如

id    arr
-----------------------------
1     [1,2]
2     [5,6,8]

所以我可以得到结果

arr      val
-------------------------------
[1,2]    1
[1,2]    2
[5,6,8]  5
[5,6,8]  6
[5,6,8]  8
4

2 回答 2

1

用于unnest()

WITH array_data(id,arr) AS ( VALUES
  (1,ARRAY[1,2]),
  (2,ARRAY[5,6,8])
)
SELECT arr,unnest(arr) AS val 
FROM array_data;
于 2015-12-09T07:04:11.960 回答
0

我不知道我是否还好,但这里有你需要的一切

select id,
       unnest(arr),
       array_to_string(arr,','),
       array_length(arr, 1)
from array_data;
于 2015-12-09T07:09:37.967 回答