好的,所以我使用了这样的 string_agg 。
select string_agg(DISTINCT first_name,', ' ORDER BY first_name) FROM person_test;
然后我写了这个来将值返回到一个表中。
SELECT *
FROM person_test
where first_name = ANY(string_to_array('Aaron,Anne', ','));
现在我想把它放在一个函数中,这样我就可以直接调用 string_agg,而不是把名字放到 string_to_array 中。
我是 postgres 的新手,没有找到任何关于如何在线执行此操作的好的文档。我相信我必须声明 string_agg 然后在 string_to_array 中调用它,但我没有这样的运气。
这是我的尝试,我知道这是正确的,但如果有人可以添加一些反馈。我在结果和 ALAIS 之间以及返回时出现错误。
create or REPLACE FUNCTION select_persons(VARIADIC names TEXT[]);
declare results ALIAS select string_agg(DISTINCT first_name,', ' ORDER BY first_name) FROM person_test;
BEGIN
return setof person_test LANGUAGE sql as $$
select * from person_test
where first_name = any(results)
end;
$$ language sql;