【PostgreSQL】文字列から検索文字の位置を取得する(IndexOf)

2020年10月4日PostgreSQL自作関数

スポンサーリンク

説明

ある文字列の中で、指定した文字列が最初に出現する位置を返します。

 

引数

引数1(character varying):ある文字列(この文字列の中から特定の文字を探します)

引数2(character varying):探す文字列

 

返り値

文字位置(数値)

 

使用する構文

strpos(この文字列から検索する,検索する文字列)
--使用例
select strpos('abcdefg','ef');                --5(=5文字目にある)
select strpos(upper('abcdefg'),upper('Cde')); --3(大文字小文字の区別なし)
select strpos('abcdefg','xyz');               --0(見つからない場合0となる)

 

コード

CREATE OR REPLACE FUNCTION public.indexof(
	c_target_char character varying,
	c_search_char character varying)
    RETURNS integer
    LANGUAGE 'plpgsql'

    COST 100
    VOLATILE 
    
AS $BODY$
declare
BEGIN

	--文字列と検索文字列が空かnullなら0とする
	if (c_target_char is null) or (c_target_char= '') then
		return 0;
	end if;
	if (c_search_char is null) or (c_search_char = '') then
		return 0;
	end if;

	RETURN strpos(c_target_char, c_search_char);

END;
$BODY$;

ALTER FUNCTION public.indexof(character varying, character varying)
    OWNER TO postgres;

※PostgreSQL9.5 , 9.6 , 10 , 11 , 12で動作確認済み 自作関数の実行方法はこちら

 

実行例

select indexOf('abcdefgh', 'f'); --【結果】:6

 

PostgreSQLの構文まとめを書いています

入門~経験者まで「基本構文・こんな時どう書くんだっけ?」のまとめ