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 ハンカク 全角文字