CONVERT

構文

目的

CONVERTは、文字列を、ある文字セットから別の文字セットに変換します。

  • 引数charは変換する値です。charは、CHARVARCHAR2NCHARNVARCHAR2CLOBまたはNCLOBデータ型です。

  • 引数dest_char_setは、charが変換される文字セットの名前です。

  • 引数source_char_setは、charをデータベースに格納している文字セットの名前です。デフォルト値はデータベース文字セットです。

CHARVARCHAR2の戻り値は、VARCHAR2です。NCHARNVARCHAR2の戻り値は、NVARCHAR2です。CLOBの戻り値はCLOBNCLOBの戻り値はNCLOBです。

変換先文字セットと変換元文字セットの引数として、リテラルまたは文字セットの名前を含んでいる列を指定できます。

完全に文字を変換するには、変換先文字セットが変換元文字セットで定義されているすべての文字を表現できる必要があります。文字が変換先文字セットに存在しないと、置換文字が使用されます。置換文字は、文字セット定義の一部として定義できます。

ノート:

Oracle Databaseの現行のリリースでは、CONVERTファンクションを使用しないことをお薦めします。CONVERTの戻り値は文字データ型であるため、そのデータ型に応じてデータベース文字セットまたは各国語文字セットのいずれかになります。この2つの文字セットのどちらでもないdest_char_setは、サポートされません。char引数とsource_char_setの要件は同じです。このため、ファンクションの実用的な用途は、誤った文字セットで格納されているデータの修正にかぎられます。

データベース文字セットと各国語文字セットのどちらでもない値は、RAWまたはBLOBとして処理して格納する必要があります。PL/SQLパッケージUTL_RAWおよびUTL_I18Nのプロシージャ(たとえば、UTL_RAW.CONVERT)では、このような値の限定的な処理が可能です。パッケージUTL_FILEUTL_TCPUTL_HTTPおよびUTL_SMTP内でRAW引数を受け入れるプロシージャを使用すると、処理されたデータを出力できます。

関連項目:

CONVERTの文字の戻り値に割り当てる照合を定義する照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。

次の例では、Latin-1文字列をASCIIに変換する文字セットの変換を示します。これは、同じ文字列をWE8ISO8859P1データベースからUS7ASCIIデータベースへインポートした場合と同じ結果が得られます。

SELECT CONVERT('Ä Ê Í Õ Ø A B C D E ', 'US7ASCII', 'WE8ISO8859P1') 
   FROM DUAL; 

CONVERT('ÄÊÍÕØABCDE' 
--------------------- 
A E I ? ? A B C D E ? 

次のようにV$NLS_VALID_VALUESビューを問い合せて、有効な文字セットのリストを取得できます。

SELECT * FROM V$NLS_VALID_VALUES WHERE parameter = 'CHARACTERSET';

関連項目:

Oracle Databaseでサポートされている文字セットの一覧は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。V$NLS_VALID_VALUESビューの詳細は、『Oracle Databaseリファレンス』を参照してください。