【PostgreSQL】2つの配列を結合する

PostgreSQL自作関数

2つの配列を結合する

2つの配列を結合する関数です。

(片方の配列の後ろにもう一つの配列を挿入し、一つの配列にする)

 

引数

引数1(character varying[]):結合する配列1(こちらの配列の後に↓の配列を挿入します)

引数2(character varying[]):結合する配列2

 

返り値

結合後の配列

 

コード(そのまま実行できます)

CREATE OR REPLACE FUNCTION array_merge(
    character varying[],
    character varying[])
  RETURNS character varying[] AS
$BODY$
declare
 
	a_array1	alias for $1; 	--引数1:結合する配列1(こちらの配列の後に↓の配列を挿入します)
	a_array2	alias for $2; 	--引数2:結合する配列2
 
	a_merge_array	character varying[];
	i_maxcount	integer;
	
	c_temp		character varying;
	
BEGIN

	i_maxcount = array_length(a_merge_array,1) + array_length(a_array2,1) ;
 
	a_merge_array = a_array1;
 
	for cnt in 1..array_length(a_array2,1)
	loop
		a_merge_array[array_length(a_array1,1) + cnt] = a_array2[cnt];
	end loop;
 
	return a_merge_array;
 
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION array_merge(character varying[], character varying[])
  OWNER TO postgres;

※PostgreSQL12で動作確認済み

 

実行例

select * from array_merge(array['1','2','3'],array['a','b','c','d','e']);
--【結果】"1,2,3,a,b,c,d,e"

 

他にもこんな関数があります(配列操作の関数)

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

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