我正在尝试理解PostgreSQL generate_subscripts
函数的第二个参数。 documentation表示第二个参数是应该生成下标的数组的维度:
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;
和
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;
(注意1
与2
)都生成相同的输出:
food
------
spam
eggs
ham
(3 rows)
我担心我不理解generate_subscripts
的第二个论点。具有更多经验的人可以澄清这个论点的作用吗?
我正在运行PostgreSQL 9.1.6。
答案 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返回相同的结果。