【PostgreSQL】大文字小文字を変換する、区別せず比較する
大文字小文字を変換する、区別せず比較する方法
大文字小文字を変換する、区別せず比較する方法を紹介します。
小文字から大文字に変換する
小文字から大文字に変換するにはupperを使用します。
※ ロケールが「C」の時は、全角小文字がupperされないため注意して下さい。
-- 小文字 → 大文字へ変換する
upper( 変換する文字列 )
-- 変換例 ※下の例はそのまま実行できます
select upper('abc'); --"ABC"
select upper('aBc'); --"ABC"
select upper('abc'); --"ABC"
大文字から小文字に変換する
大文字から小文字に変換するにはlowerを使用します。
※ ロケールが「C」の時、全角小文字がlowerされないため注意して下さい。
-- 大文字 → 小文字変換へ変換する
lower( 変換する文字列 )
-- 変換例 ※下の例はそのまま実行できます
select lower('ABC'); --"abc"
select lower('aBc'); --"abc"
select lower('ABC'); --"abc"
大文字小文字を区別せず比較する
大文字小文字を区別したくない場合には、どちらの文字に合わせて比較します。
※ 次の例では大文字に合わせて比較しています。
-- 大文字に変換したもの同士で比較する
select upper('abc') = upper('ABC'); --true
-- 大文字に変換したもの同士+trimして比較する
select upper(trim('abc')) = upper(trim('ABC')); --true
かなり緩めな文字列比較
かなり緩めに文字列を比較したい場合の例を紹介します。
例えば、大文字小文字、全半角、前後のスペースが異なっても同じとみなしたい場合です。
例:APPLEとapple、BLUEとblue など
-- それぞれの文字をtrim後、小文字を大文字に変換しさらに半角から全角に変換して比較する
select convert_half_to_full(upper(trim('abc ')))
= convert_half_to_full(upper(trim('ABC '))); --true
あわせて読みたい
上の例は、この自作関数「convert_half_to_full」を使用しています