2010-07-29 78 views
1

我需要將逗號分隔的文本轉換爲一組記錄。我創造了這個功能 ,但我不相信,最好的辦法:Postgres STRING_TO_ARRAY替代?像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; 

是否有類似STRING_TO_ARRAY(也許STRING_TO_RECORD)任何其他功能?

回答

2

在8.4,你可以使用:

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