如何循环拆分字符串

时间:2013-09-29 17:57:11

标签: sql postgresql plpgsql

如何在某个分隔符上拆分字符串然后遍历各个部分?我尝试了一些函数和循环类型但没有成功。我正在努力实现以下目标:

create or replace function splitloop() returns void
as $$
DECLARE
part text;
BEGIN
   foreach part in string_to_array('one,two,three', ',')
   loop
      -- do something with part
   end loop;
END;
$$ language plpgsql;

2 个答案:

答案 0 :(得分:7)

你应该在实际数组之前添加单词'array':

foreach part in array string_to_array('one,two,three', ',')
loop
    -- do something with part
end loop;

<强> sql fiddle demo

关于looping through arrays的文档。

答案 1 :(得分:0)

如果您可以根据基于集合的操作(纯SQL查询)重构问题,则应该这样做。 unnest()是关键的集合返回函数。也可以包含在sqlplpgsql函数中。 plpgsql语法:

RETURN QUERY
SELECT unnest(string_to_array('one,two,three', ','))
...

详细信息取决于您的详细信息。