【PostgreSQL】配列をループさせる

PostgreSQL構文

説明

配列をループさせる簡単な実行例があまりないと感じ、サンプル関数を用意しました。

pgAdminのクエリツールからすぐに実行できるようにしましたので、実行し結果を確かめてみて下さい。

 

 

コード

CREATE OR REPLACE FUNCTION testfnc()
RETURNS boolean
LANGUAGE 'plpgsql' COST 100 VOLATILE AS $BODY$
declare
	loopcount integer;
	arr character varying[];
begin

	--arrは配列
	arr = array['A','B','C','D'];

	--配列の中身をループで表示する
	for loopcount in 1..array_length(arr,1) loop
		raise info '%' , arr[loopcount]; 
	end loop;

	return true;
	
end;
$BODY$;
ALTER FUNCTION testfnc() OWNER TO postgres;

--関数を実行する文↓
select * from testfnc();

 

 

実行結果について

実行した場合、「true」が返ってくるだけだと思いますが、「メッセージ」タブを表示すると配列の中身が表示されていると思います。

あとは適宜、中身を変えて実行してみて下さい。

 

 

【補足】For文について

For文の構文は次のように書きます。

--For文の構文
FOR 変数名 IN 初期値..終了値 LOOP
処理
END LOOP;

 

配列の要素数はarray_length()で取得できます。

2つ目の引数は配列の次元です。1次元の配列なら1を指定します。

--配列の要素数を取得する
array_length( 配列 , 配列の次元 )

 

これらを使ってサンプル関数では次のようにしています。

--ループ用の変数を「loopcount」とし、1から配列の要素数分ループさせる
for loopcount in 1..array_length(arr,1) loop

--raise infoで変数の中身を表示する
raise info '%' , arr[loopcount];
 
end loop;

 

 

数値型の配列バージョン

需要があるかわかりませんが文字型ではなく、数値型の配列も用意してみました。

CREATE OR REPLACE FUNCTION testfnc()
RETURNS boolean
LANGUAGE 'plpgsql' COST 100 VOLATILE AS $BODY$
declare
	loopcount integer;
	arr integer[];
begin

	--arrは配列
	arr = array[1,10,100,1000];

	--配列の中身をループで表示する
	for loopcount in 1..array_length(arr,1) loop
		raise info '%' , arr[loopcount]; 
	end loop;

	return true;
	
end;
$BODY$;
ALTER FUNCTION testfnc() OWNER TO postgres;

--関数を実行する
select * from testfnc();


--関数を実行する
select * from testfnc();

以上、配列をループさせるサンプルでした。

 

 

関連記事(配列)

・配列の先頭・末尾に追加する

・配列の値で抽出する(Where、any)

・配列の指定箇所に値を入れる(数値)

・配列の指定箇所に値を入れる(文字列)

・配列が全て空かチェックする

・配列の重複値を除外する

・配列の要素数を取得する

・配列に特定の文字列が含まれるかをチェックする

・2つの配列を結合する