わかりましたので、このような 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_to_array に実際に名前を入れる代わりに、string_agg を呼び出すことができます。
私は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;