考虑以下案例
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
答案 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;