2013-09-11 43 views
4

我想了解PostgreSQL generate_subscripts函數的第二個參數。所述documentation指出的第二個參數是在其下標應產生該陣列的尺寸:第二個參數對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; 

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。

回答

3

第二參數是尺寸:

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

+1

啊,我明白了!雖然我很困惑,因爲你使用整數作爲你的數組成員。我修改了你的例子和使用過的字符串,這讓我更加清楚:select * from generate_subscripts(array [['''''''''''''''''''''''''''''''香蕉']],2);'。謝謝! – skyler

相關問題