Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 第二个参数对生成_下标有什么影响?_Sql_Arrays_Postgresql - Fatal编程技术网

Sql 第二个参数对生成_下标有什么影响?

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

我试图理解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 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)