【PostgreSQL】2つの文字列を比較して一致するかチェックする

2020年7月15日

スポンサーリンク

説明

2つの文字列を比較して一致するかチェックします。

※注意:小文字大文字、半角全角が異なっても一致すると判定します。

 

引数

引数1(character varying):比較する文字列1

引数2(character varying):↑と比較する文字列2

 

返り値

True:一致する、False:一致しない

 

コード

CREATE OR REPLACE FUNCTION public.check_same_character(
	c_target character varying,
	c_comparison character varying)
    RETURNS boolean
    LANGUAGE 'plpgsql'

    COST 100
    VOLATILE 
    
AS $BODY$
declare 
BEGIN
 
	--trim
	c_target = trim(c_target);
	c_comparison = trim(c_comparison);

	--大文字+半角を全角に変換して比較する
	c_target = translate(upper(c_target), '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ ', '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ ');
	c_comparison = translate(upper(c_comparison), '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ ', '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ ');
  
	--ロケールが「C」の時全角小文字がupperされないためここで変換
	c_target = translate(c_target, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ');
	c_comparison = translate(c_comparison, 'abcdefghijklmnopqrstuvwxyz ', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ');
    
	if c_target = c_comparison then
        --一致する
		return true;
	else
        --一致しない
		return false;
	end if;
  
END;
$BODY$;

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

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

 

実行例

select * from check_same_character('abc','ABC'); 
--【結果】:True

 

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

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