如何 select 数组的每个值
How to select each value of array
考虑以下案例
Table : tab1
id serial primary key
arr int[]
现在我想 select 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
为此使用 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;
我不知道我身体好不好,但这里有你需要的一切
select id,
unnest(arr),
array_to_string(arr,','),
array_length(arr, 1)
from array_data;
考虑以下案例
Table : tab1
id serial primary key
arr int[]
现在我想 select 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
为此使用 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;
我不知道我身体好不好,但这里有你需要的一切
select id,
unnest(arr),
array_to_string(arr,','),
array_length(arr, 1)
from array_data;