Я хочу взять массив размеров 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];
возвращает null , что я считаю корнем моей проблемы.