sky*_*ler 5 sql arrays postgresql
我试图理解PostgreSQL generate_subscripts函数的第二个参数.该文档指出的第二个参数是在其下标应生成所述阵列的尺寸:
generate_subscripts是一个便捷函数,它为给定数组的指定维生成一组有效的下标.
但是,对于我的二维示例数组,提供参数1或2两者都会生成相同的输出.
WITH data AS (
select (array[['1','spam','3'], ['4','eggs','6'], ['7','ham','9']]) AS arr
)
SELECT arr[i][2] AS food
FROM data,
generate_subscripts((SELECT arr FROM data), 1) i;
Run Code Online (Sandbox Code Playgroud)
和
WITH data AS (
select (array[['1','spam','3'], ['4','eggs','6'], ['7','ham','9']]) AS arr
)
SELECT arr[i][2] AS food
FROM data,
generate_subscripts((SELECT arr FROM data), 2) i;
Run Code Online (Sandbox Code Playgroud)
(Note 1vs. 2)都生成相同的输出:
food
------
spam
eggs
ham
(3 rows)
Run Code Online (Sandbox Code Playgroud)
我担心我不理解第二个论点generate_subscripts.有经验的人可以澄清这个论点的作用吗?
我正在运行PostgreSQL 9.1.6.
第二个参数是尺寸:
postgres=# select * fromgenerate_subscripts(array[[1,2,3],[3,4,5]],1);
生成下标
--------------------
1
2
(2 行)
postgres=# select * fromgenerate_subscripts(array[[1,2,3],[3,4,5]],2);
生成下标
--------------------
1
2
3
(3行)
在您的示例中,两个维度大小相同,因此generate_subscripts返回相同的结果。