CONVERT
構文
目的
CONVERT
は、文字列を、ある文字セットから別の文字セットに変換します。
-
引数
char
は変換する値です。charは、CHAR
、VARCHAR2
、NCHAR
、NVARCHAR2
、CLOB
またはNCLOB
データ型です。 -
引数
dest_char_set
は、char
が変換される文字セットの名前です。 -
引数
source_char_set
は、char
をデータベースに格納している文字セットの名前です。デフォルト値はデータベース文字セットです。
CHAR
とVARCHAR2
の戻り値は、VARCHAR2
です。NCHAR
とNVARCHAR2
の戻り値は、NVARCHAR2
です。CLOB
の戻り値はCLOB
、NCLOB
の戻り値は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_FILE
、UTL_TCP
、UTL_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リファレンス』を参照してください。