5

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

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;

(注12)都产生相同的输出:

 food
------
 spam
 eggs
 ham
(3 rows)

恐怕我不理解generate_subscripts. 有更多经验的人可以澄清这个论点的作用吗?

我正在运行 PostgreSQL 9.1.6。

4

1 回答 1

4

第二个参数是维度:

postgres=# select * from generate_subscripts(array[[1,2,3],[3,4,5]],1);
 生成下标
---------------------
                   1
                   2
(2 行)

postgres=# select * from generate_subscripts(array[[1,2,3],[3,4,5]],2);
 生成下标
---------------------
                   1
                   2
                   3
(3 行)

在您的示例中,两个维度的大小相同,因此 generate_subscripts 返回相同的结果。

于 2013-09-11T04:47:34.403 回答