PostgreSQLの文字列関数を使ってみる

PostgreSQLの文字列関数を使ってみる

translate関数で文字を置換する

1文字ずつ置換先の文字を指定することができる
例えば以下のように指定することで全角数値を半角数値に変換できる

translate('13ndfhauo392805735678936',  '0123456789','0123456789');

また置換先の文字を指定しない場合は文字を消すことができる(PostgreSQL以外の場合では動きが違うかもしれないです)。以下のように指定すると数値を除去して表示できる。

select translate( '13ndfhauo392805735678936', '0123456789', '');

これらを組み合わせると数値のみを表示するといったことができます。

select translate(translate('13ndfhauo392805735678936',  '0123456789','0123456789'), translate( '13ndfhauo392805735678936', '0123456789', ''), '') ;

lpad,rpadで指定した文字数で表示する

lpadでは指定した文字数に足りない場合は右側に文字を埋めて表示する。以下のSQLでは5文字の長さで表示するように、足りない場合は'02'で文字埋めして表示する。

select lpad('12', 5, '02');

文字数を超過する場合は最初の文字を切り出して表示します。

select lpad('236789977', 5, '02')

左側に文字を超過する場合はrpadを使います。

select rpad('12', 5, '02');