Unnest array por un nivel
Quiero tomar una variedad den
dimensiones y conjunto de retorno que contiene filas de matrices den-1
dimensiones. Por ejemplo, tome la matrizARRAY[[1,2,3], [4,5,6], [7,8,9]]
y devolver un conjunto{1,2,3}, {4,5,6}, {7,8,9}
. Usar unnest devuelve el conjunto1,2,3,4,5,6,7,8,9
.
ntenté tomar la función desagradable de PostgreSQL 8.4, que parece que haría lo que estoy buscando:
CREATE OR REPLACE FUNCTION tstng.unnest2(anyarray)
RETURNS SETOF anyelement
LANGUAGE plpgsql
IMMUTABLE
AS $
BEGIN
RETURN QUERY SELECT $1[i]
FROM generate_series(array_lower($1,1), array_upper($1,1)) i;
END;
$;
Sin embargo,SELECT tstng.unnest2(ARRAY[[1,2,3], [4,5,6], [7,8,9]]);
devuelve el conjunto, ,
(es decir: 3 filas nulas).
También he encontrado queSELECT (ARRAY[[1,2,3], [4,5,6], [7,8,9]])[0];
devuelve nulo, que creo que es la raíz de mi problema.