2010-07-29 12 views
1

J'ai besoin de convertir un texte séparé par des virgules en un ensemble d'enregistrements. J'ai créé cette fonction mais je ne suis pas convaincu que la meilleure façon:Postgres STRING_TO_ARRAY alternative? Comme STRING_TO_RECORD?

CREATE OR REPLACE FUNCTION F_StringListToRecord(pStringList TEXT, pDelimiter VARCHAR(10)) RETURNS SETOF RECORD AS $$ 
DECLARE 
    vIndex INT; 
    arrSize INT; 
    arrValue TEXT[]; 
BEGIN 
    arrValue := STRING_TO_ARRAY(pStringList, pDelimiter); 
    arrSize := ARRAY_UPPER(arrValue, 1); 
    FOR vIndex IN 1..arrSize LOOP 
    RETURN QUERY SELECT arrValue[vIndex]; 
    END LOOP; 
END $$ 
LANGUAGE plpgsql; 

est-il une autre fonction similaire à string_to_array (peut-être STRING_TO_RECORD)?

Répondre

2

En 8.4, vous pouvez utiliser:

select * from unnest(string_to_array(my_string_here,delimiter)) as v(x);