我需要将逗号分隔的文本转换为一组记录。我创建了这个功能 但我不相信最好的方法:
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)?
答案 0 :(得分:3)
在8.4中你可以使用:
select * from unnest(string_to_array(my_string_here,delimiter)) as v(x);