Unnest-array durch eine Ebene

Möchte ich ein array von n Abmessungen und Rückgabe eingestellt mit den Zeilen des arrays von n-1 Dimensionen. Zum Beispiel, nehmen Sie die array ARRAY[[1,2,3], [4,5,6], [7,8,9]] und zurückgeben eines Satzes {1,2,3}, {4,5,6}, {7,8,9}. Mit unnest gibt den Satz 1,2,3,4,5,6,7,8,9.

Ich habe versucht, greifen die unnest-Funktion von PostgreSQL-8.4, die scheint, wie Sie tun würde, was ich Suche:

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;
    $$;

Jedoch SELECT tstng.unnest2(ARRAY[[1,2,3], [4,5,6], [7,8,9]]); gibt den Satz , , (d.h.: 3 null Zeilen).

Habe ich auch herausgefunden, dass SELECT (ARRAY[[1,2,3], [4,5,6], [7,8,9]])[0]; null zurück, und ich glaube, dass die Wurzel meines Problems.

InformationsquelleAutor Matt | 2011-11-15
Schreibe einen Kommentar