データ加工によく使う文字列関数等を記録
やりたいこと
〇カラムの先頭にある全角・半角スペースを取り除く
〇カラムの先頭にある数字のみ別カラムに移す
カラムの先頭にある全角・半角スペースを取り除く
テストデータ「test_table」のイメージ。先頭と文字の間に半角・全角スペースがある。
このデータから先頭の半角・全角スペースを全て取り除きたい。
trim関数を使う。
書き方はtrim(対象カラム,'[対象文字列]’)
※わかりずらいが、今回は半角・全角スペースを[対象文字列]内に入れている。
1 2 3 4 5 6 |
--先頭の半角・全角スペースを取り除く select test1,trim(test1,' ') from test_table /*trim関数の''の中は以下のようになっている。 select test1,trim(test1,'[半角スペース][全角スペース]') from test_table */ |
実行結果
先頭の半角・全角スペースのみ削除される。
updateの書き方は以下の通り
1 2 3 4 5 |
--trim関数を使ってカラムのアップデート update test_table set test1 = trim(test1,' ') from test_table |
カラムの先頭にあるの数字のみ別カラムに移す
テストデータ「test_table」のイメージ。カラムの先頭に桁がバラバラな数字がある。
数字のみ抜き出して別カラムに移したい。
regexp_replaceと正規表現を使って文字列を置換する。書き方は以下の通り。
regexp_replace(対象カラム,’対象文字列’,’置換後の文字列’)
今回使う正規表現は以下の通り。
正規表現も複雑で詳細に書くと趣旨から外れてしまうので超ざっくり説明する。
SQLは以下のように書ける
1 2 3 4 5 6 |
--regexp_replaceを使って文字を置換する select test1,regexp_replace(test1,'^[0-9]{1,3}(.*)','\1') as 数字除去, regexp_replace(test1,'^([0-9]{1,3}).*','\1') as 数字のみ from test_table |
実行結果は以下の通り
正規表現と併せて使うことで効果が高まる
今回は業務で使用した文字列操作の関数を記録した。文字列操作関数は正規表現と組み合わせることで効果が高まるので、今後正規表現についても記録していく。
コメント