如何在某个分隔符上拆分字符串然后遍历各个部分?我尝试了一些函数和循环类型但没有成功。我正在努力实现以下目标:
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;
答案 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()
是关键的集合返回函数。也可以包含在sql
或plpgsql
函数中。 plpgsql
语法:
RETURN QUERY
SELECT unnest(string_to_array('one,two,three', ','))
...
详细信息取决于您的详细信息。