第二个参数对generate_subscripts有什么影响?

sky*_*ler 5 sql arrays postgresql

我试图理解PostgreSQL generate_subscripts函数的第二个参数.该文档指出的第二个参数是在其下标应生成所述阵列的尺寸:

generate_subscripts是一个便捷函数,它为给定数组的指定维生成一组有效的下标.

但是,对于我的二维示例数组,提供参数12两者都会生成相同的输出.

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.

Pav*_*ule 4

第二个参数是尺寸:

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返回相同的结果。