文字列を違う文字コードに変換する

syntax

CONVERT ( string , dest_charset [, source_charset] )
return [ varchar2 ]

parameter

string変換する対象の文字列
dest_charset変換先のキャラクタセット
source_charset変換元のキャラクタセットdefault DBキャラクタセット

return

  • 文字コードを変換した文字列(VARCHAR2 型に格納)

avail

  • SQL および PL/SQL の両方で使用可能。

CONVERT 関数の内容

変換する対象の文字列 string を 変換前の キャラクタセット source_charset から 変換後のキャラクタセット dest_charset に変更した文字列を戻す。

CONVERT 関数の追加説明と注意事項

変換文字に対応するコードポイントが存在しない場合にはクエスチョンマーク(クエッションマーク)(?) に変換される。
変換する対象の文字列 string にはラージオブジェクトも利用することが可能。
利用できる型は CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB、NCLOB の6つで LONG には使用できない。

注意

UTL_I18N パッケージの STRING_TO_RAW ファンクションは変換結果を RAW 型に代入するが CONVERT 関数は VARCHAR2 型として戻す。 文字化けする状態の VARCHAR2 型をデータベースに格納すると結果として将来データが壊れてしまう可能性がある。型本来のキャラクタセット以外の文字列を格納する場合には RAW を使用する。

CONVERT 使用例

データベースのキャラクタセットが Shift-JIS(JA16SJISTILDE) の場合の文字コードの変換

SQL> select CONVERT('あいう', 'JA16EUCTILDE') from dual;
 
CONVERT
------------
、「、、、ヲ ← 文字化けする
SQL> select CONVERT('あいう', 'JA16EUCTILDE', 'JA16SJISTILDE') from dual;
 
CONVERT
------------
、「、、、ヲ  ⇒ 'あいう' (EUC-JP のため文字化けする)

変換前のキャラクタセットの名称 source_charset と入力した文字コードと一致していない場合の文字コードの変換
データベースのキャラクタセットが Shift-JIS(JA16SJISTILDE)

SQL> select CONVERT('aaa', 'JA16SJIS' ,'JA16EUCTILDE') from dual;
 
CONVER
------
aaa
SQL> select CONVERT('あいう', 'JA16SJIS' ,'JA16EUCTILDE') from dual;
select CONVERT('あいう', 'JA16SJIS' ,'JA16EUCTILDE') from dual
                                                          *
行1でエラーが発生しました。:
ORA-12703: このキャラクタ・セット変換はサポートされません。

文字コードの変換、そして再変換 (SJIS ⇒ EUC ⇒ SJIS)

SQL> select CONVERT(CONVERT('あいう', 'JA16EUCTILDE'),'JA16SJISTILDE', 'JA16EUCTILDE')
  2  from dual;
 
CONVERT
------------
あいう

「あいう」⇒「、「、、、ヲ」(EUC 文字化け) ⇒ 'あいう'



PL/SQL パッケージ - CONVERT 関連

SQL 関数 - CONVERT 関連

 
アルファベット別 関数一覧 ショートカット
ABCDEFG
HILMNOP
RSTUVWX
日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle のライセンスがわからない…
Oracle Direct (ネットで聞いても最後はここで要確認)