Развернуть массив на один уровень
Я хочу взять массивn
Размеры и возвращаемый набор, содержащий ряды массивовn-1
размеры. Например, возьмите массивARRAY[[1,2,3], [4,5,6], [7,8,9]]
и вернуть набор{1,2,3}, {4,5,6}, {7,8,9}
, Использование unnest возвращает набор1,2,3,4,5,6,7,8,9
.
Я попытался получить функцию unnest из PostgreSQL 8.4, которая, похоже, сделала бы то, что я ищу:
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;
$;
Тем не мение,SELECT tstng.unnest2(ARRAY[[1,2,3], [4,5,6], [7,8,9]]);
возвращает набор, ,
(т.е. 3 пустых строки).
Я также обнаружил, чтоSELECT (ARRAY[[1,2,3], [4,5,6], [7,8,9]])[0];
возвращает ноль, который я считаю корнем моей проблемы.