Oracle SQL 関数 : REPLACE : 文字列置換

 charRet := REPLACE( charSrc , strSearch [ , strReplace ] );

  REPLACEは文字データcharSrcを先頭からサーチし、
  文字列strSearchと一致する部分を文字列strReplaceに置き換えます。
  strReplaceが指定されていない場合は置換えではなく一致する部分を削除します。
SQL> SELECT REPLACE('AABBBCCCCDDDDD', 'AA', 'XXXX'), REPLACE('AABBBCCCCDDDDD', 'AA') FROM DUAL;

REPLACE('AABBBCC REPLACE('AAB
---------------- ------------
XXXXBBBCCCCDDDDD BBBCCCCDDDDD

この例では最初は置換え処理を、2番目には削除処理を示しています。

尚、「strSearch」が NULL もしくは空文字の場合には「charSrc」が返されます。

SQL> SELECT REPLACE('AABBB', NULL), REPLACE('AABBB', '') FROM DUAL;

REPLACE('A REPLACE('A
---------- ----------
AABBB      AABBB

SQL> SELECT REPLACE('AABBB', NULL, '11'), REPLACE('AABBB', '', '11') FROM DUAL;

REPLACE('A REPLACE('A
---------- ----------
AABBB      AABBB


取敢えず、全角文字と半角文字の置換は出来るようです。

SQL> SELECT
  2      REPLACE('AAあいうえおDDD', 'あ', 'XX') AS "全角=>半角"
  3     ,REPLACE('AAあいうえおDDD', 'AA', '愛王絵お') AS "半角=>全角"
  4  FROM DUAL;

全角=>半角                     半角=>全角
------------------------------ ------------------------------------------
AAXXいうえおDDD                愛王絵おあいうえおDDD


ちなみに、私のオラクルDBは文字コードを「Shift-JIS」に設定しています。
文字コードの確認を行う場合は以下のSQLで行います。

SQL> SELECT VALUE FROM NLS_DATABASE_PARAMETERS
  2  WHERE PARAMETER = 'NLS_CHARACTERSET';

VALUE
--------------------------------------------------------------------------------
JA16SJIS