【PostgreSQL】大文字小文字を変換する、区別せず比較する

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」を使用しています