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

时间:2013-09-11 02:48:17

标签: sql arrays postgresql

我正在尝试理解PostgreSQL generate_subscripts函数的第二个参数。 documentation表示第二个参数是应该生成下标的数组的维度:

  

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。

1 个答案:

答案 0 :(得分:4)

第二个参数是尺寸:

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