【PostgreSQL】文字列から検索文字の位置を取得する(IndexOf)
説明
ある文字列の中で、指定した文字列が最初に出現する位置を返します。
引数
引数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 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$;
※PostgreSQL9.5 , 9.6 , 10 , 11 , 12で動作確認済み 自作関数の実行方法はこちら
実行例
select indexOf('abcdefgh', 'f'); --【結果】:6