Oracle SQL 関数 : TO_MULTI_BYTE,TO_SINGLE_BYTE : マルチバイト・シングルバイト変換
strRet := TO_MULTI_BYTE ( strSrc ); strRet := TO_SINGLE_BYTE( strSrc ); strSrc をマルチバイト、またはシングルバイトに変換した文字列を返します。 半角カタカナの文字は全角には変換されません。 (半角カタカナは内部的にはマルチバイト表現のため)
私の Oracle の環境は文字コードが Shift-JIS なのですが、関数の使用例を示します。
SQL> SELECT VALUE FROM NLS_DATABASE_PARAMETERS
2 WHERE PARAMETER='NLS_CHARACTERSET' ;
VALUE
--------------------------------------------------------------------------------
JA16SJIS
SQL> SET LINESIZE 128
SQL> SELECT
2 TO_MULTI_BYTE('ABC') AS "'ABC'"
3 ,TO_MULTI_BYTE('123,456.789') AS "'123,456.789'"
4 ,TO_MULTI_BYTE('ハンカク') AS "'ハンカク'"
5 ,TO_MULTI_BYTE('全角文字') AS "'全角文字'"
6 FROM DUAL;
'ABC' '123,456.789' 'ハンカク' '全角文字'
------------ -------------------------------------------- -------- ----------------
ABC 123,456.789 ハンカク 全角文字
3番目の「ハンカク」はそのままの文字列が戻されることが分かります。
この関数はいわゆる ASCII 文字を全角にする場合に使うぐらいしか用途が無いようです。
以下は TO_SINGLE_BYTE の例を示します。
SQL> SELECT
2 TO_SINGLE_BYTE('ABC') AS "'ABC'"
3 ,TO_SINGLE_BYTE('123,456.789') AS "'123,456.789'"
4 ,TO_SINGLE_BYTE('ハンカク') AS "'ハンカク'"
5 ,TO_SINGLE_BYTE('全角文字') AS "'全角文字'"
6 FROM DUAL;
'AB '123,456.78 'ハンカク' '全角文字'
------ ---------------------- -------- ----------------
ABC 123,456.789 ハンカク 全角文字