LoginSignup
0
0

【PostgreSQL】配列を任意の引数とした関数でselectの結果を返す

Posted at

概要

以下の条件でsleectの結果を返す、PostgreSQLの関数を試しに作成してみたのでメモ書きを残しておきます。

  • 配列が引数で設定された場合は、その値で絞り込みを行う。
  • 配列が引数で設定されていない場合は、絞り込みを行わない。

対応方針

今回用意したテーブル

CREATE TABLE public.sample_table (
	id int8 NOT NULL,
	"name" varchar NOT NULL,
	CONSTRAINT samle_table_pk PRIMARY KEY (id)
);

データは以下の通り入ってるものとします。
ファイル名

実装サンプル

create or replace
function sample_function(names varchar[] default '{}'::varchar[]) returns 
table(id int8, name varchar) as $$
begin
return QUERY
  select
	sample.id,
	sample.name
from
	public.sample_table sample
where
	case
		when array_length(names, 1) > 0 
    then sample.name = any(names)
		else true
	end;
end;
$$ language plpgsql;

select * from sample_function()で実行した場合は全件取得できて、select * from sample_function(array['テスト1', 'テスト2']::varchar[])で実行した場合は2件取得できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0