5

generate_subscriptsPostgreSQL関数の 2 番目の引数を理解しようとしています。ドキュメントには、2 番目の引数が添字を生成する配列の次元であると記載されています。

generate_subscripts は、指定された配列の指定された次元に対して有効な添え字のセットを生成する便利な関数です。

ただし、私の 2 次元の例の配列では、引数を指定する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;

(注1vs. 2) どちらも同じ出力を生成します。

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

残念ながら、 の 2 番目の引数がわかりませんgenerate_subscripts。より経験のある人は、この議論が何をするのかを明確にすることができますか?

PostgreSQL 9.1.6 を実行しています。

4

1 に答える 1

4

2 番目のパラメーターはディメンションです。

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

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

あなたの例では、両方の次元が同じサイズであるため、generate_subscripts は同じ結果を返します。

于 2013-09-11T04:47:34.403 に答える