如何选择数组的每个值

时间:2015-12-09 05:39:18

标签: arrays database postgresql unnest

考虑以下案例

Table : tab1
id    serial      primary key
arr   int[]

现在我想选择arr的每个值。

SELECT * FROM (SELECT arr FROM tab1) AS tab2

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

e.g。

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

我不知道我是否已经康复,但在这里你有你所需要的一切

select id,
       unnest(arr),
       array_to_string(arr,','),
       array_length(arr, 1)
from array_data;