Sql 第二个参数对生成_下标有什么影响?
我试图理解PostgreSQL生成下标函数的第二个参数。声明第二个参数是应在其上生成下标的数组的维度: generate_subscripts是一个方便的函数,用于生成集合 给定数组的指定维度的有效下标数 但是,对于我的二维示例数组,提供参数1或2都会生成相同的输出Sql 第二个参数对生成_下标有什么影响?,sql,arrays,postgresql,Sql,Arrays,Postgresql,我试图理解PostgreSQL生成下标函数的第二个参数。声明第二个参数是应在其上生成下标的数组的维度: 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
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;
及
注1和2均产生相同的输出:
food
------
spam
eggs
ham
(3 rows)
恐怕我不理解生成_下标的第二个参数。有更多经验的人能澄清这个论点的作用吗
我正在运行PostgreSQL 9.1.6。第二个参数是维度: postgres=# select * from generate_subscripts(array[[1,2,3],[3,4,5]],1); generate_subscripts --------------------- 1 2 (2 rows) postgres=# select * from generate_subscripts(array[[1,2,3],[3,4,5]],2); generate_subscripts --------------------- 1 2 3 (3 rows)
在您的示例中,两个维度的大小相同,因此generate_subscripts返回相同的结果。啊,我现在明白了!虽然我很困惑,因为您使用整数作为数组成员。我修改了您的示例并使用了字符串,这使我更加清楚:选择*from generate_subscriptsarray[['dog'、'cat'、'zebra']、['horse'、'tiger'、'banana']],2;。非常感谢。 postgres=# select * from generate_subscripts(array[[1,2,3],[3,4,5]],1); generate_subscripts --------------------- 1 2 (2 rows) postgres=# select * from generate_subscripts(array[[1,2,3],[3,4,5]],2); generate_subscripts --------------------- 1 2 3 (3 rows)