Oracle SQL 関数 : TRANSLATE : 文字列置換
charRet := TRANSLATE( charSrc , strSearch , strTranslate );
TRANSLATEは文字データcharSrcを先頭からサーチし、文字列strSearchと一致する文字があった場合に
変換文字列strTranslateの対応する文字に置換します。
strTranslateがstrSearchより短い場合は、strSearchに対応する文字を削除します。
2 TRANSLATE( '1234321' , '123' , 'ABC' ) AS TEST1 /* 1⇒A, 2⇒B, 3⇒C */ |
3 ,TRANSLATE( '1234321' , '123' , 'AB' ) AS TEST2 /* 1⇒A, 2⇒B, 3⇒削除 */ |
4 ,TRANSLATE( '1234321' , '12' , 'ABC' ) AS TEST3 /* 1⇒A, 2⇒B*/ |
5 ,TRANSLATE( 'あいうえお' , 'あいう' , 'AB' ) AS TEST4 /* あ⇒A, い⇒B, う⇒削除 */ |
6 ,TRANSLATE( 'ABCDE' , 'ABC' , 'あい' ) AS TEST5 /* A⇒あ, B⇒い, C⇒削除 */ |
TEST1 TEST2 TEST3 TEST4 TEST5 |
ABC4CBA AB4BA AB343BA ABえお あいDE |
TRANSLATEの注意点は、取扱が文字単位でありバイト単位ではないことです。上の例からも分かる様に、
シングルバイト文字とマルチバイト文字との変換が可能です。
但し、1文字単位での処理のため、「ダヂヅデド」などの半角の濁音文字を「ダヂヅデド」全角文字に変換するには
1回のTRANSLATEでは不可能ですので、PL/SQLで自分で関数を作るしかないかもしれません。
本書用のWebアプリを使ってSQLを実行し学習していきます。初心者の方に分かりやすく、図表を多く使って解説されています。 学習の最後には200問越えのドリルが付いていてSQLのスキルが試せる様になっています。