【PostgreSQL】配列の指定箇所に値を入れる(文字列)
説明
配列の指定箇所に値を入れる(文字列)
引数
引数1(character varying[]):挿入する配列
引数2(numeric):挿入する場所(1からカウント)
引数3(character varying):挿入する文字列
返り値
値を挿入した後の配列
コード
CREATE OR REPLACE FUNCTION insert_into_array_char(
character varying[],
numeric,
character varying)
RETURNS character varying[] AS
$BODY$
declare
a_array alias for $1; --引数1:挿入する配列
insert_pos alias for $2; --引数2:挿入する場所(1からカウント)
c_insert_char alias for $3; --引数3:挿入する文字列
return_array character varying[];
begin
for temp_count in 1..array_length(a_array,1)
loop
--返り値用の配列に値をセット
if temp_count < insert_pos then
--ループカウント < 引数2(insert_pos)の時、元の配列の値をセット return_array[temp_count] = a_array[temp_count]; end if; if temp_count = insert_pos then --ループカウント = 引数2(insert_pos)の時、引数3(挿入する文字列)をセット return_array[temp_count] = c_insert_char; end if; if temp_count > insert_pos then
--ループカウント > 引数2(insert_pos)の時、元の配列の値(配列の添え字は-1)をセット
return_array[temp_count] = a_array[temp_count -1] ;
end if;
if temp_count = array_length(a_array,1) then
--最後に元の配列の最後の値をセット
return_array[temp_count +1 ] = a_array[temp_count];
end if;
end loop;
return return_array;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION insert_into_array_char(character varying[], numeric, character varying)
OWNER TO postgres;
※PostgreSQL12で動作確認済み
実行例
select * from insert_into_array_char(array['A','B','C','D','E','F'],3,'Z')
--{A,B,Z,C,D,E,F}