下标生成函数
generate_subscripts(array anyarray, dim int)
描述:生成一系列包括给定数组的下标。
返回值类型:setof int
示例:
1 2 3 4 5 6 7 8 |
SELECT generate_subscripts('{NULL,1,NULL,2}'::int[], 1) AS s; s --- 1 2 3 4 (4 rows) |
generate_subscripts(array anyarray, dim int, reverse boolean)
描述:生成一系列包括给定数组的下标。当reverse为真时,该系列则以相反的顺序返回。
返回值类型:setof int
示例:
1 2 3 4 5 6 7 8 |
SELECT generate_subscripts('{NULL,1,NULL,2}'::int[], 1,TRUE) AS s; s --- 4 3 2 1 (4 rows) |
generate_subscripts是为给定数组的指定维度生成有效下标集的函数。如果数组中没有所请求的维度或者任何输入NULL数组,均返回零行(但是会给数组元素为空的返回有效下标)。示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
--unnest一个2D数组。 CREATE OR REPLACE FUNCTION unnest2(anyarray) RETURNS SETOF anyelement AS $$ SELECT $1[i][j] FROM generate_subscripts($1,1) g1(i), generate_subscripts($1,2) g2(j); $$ LANGUAGE sql IMMUTABLE; SELECT * FROM unnest2(ARRAY[[1,2],[3,4]]); unnest2 --------- 1 2 3 4 (4 rows) |