UTL_I18N
は、PL/SQLで作成されたアプリケーションに追加のグローバリゼーション機能を提供するサービスを集めたものです。
関連項目: 『Oracle Databaseグローバリゼーション・サポート・ガイド』 |
この章では、次の項目について説明します。
概要
セキュリティ・モデル
定数
この項では、UTL_I18N
パッケージの使用に関連する項目について説明します。
UTL_I18N
PL/SQLパッケージは、次のカテゴリのサービスで構成されています。
各種データ・タイプに対応した文字列変換ファンクション
テキスト文字列と文字参照の間で変換を実行するファンクション
Oracle、JavaおよびISOの各言語と各テリトリの間でマップするファンクション
Oracle、Internet Assigned Numbers Authority (IANA)および電子メールで安全なキャラクタ・セット間でマップするファンクション
Oracleの言語名からOracleのキャラクタ・セット名を戻すファンクション
スクリプト変換を実行するファンクション
指定したテリトリでサポートされているISO通貨コード、ローカル・タイムゾーンおよびローカル言語を戻すファンクション
指定した言語でサポートされている最適な言語ソート、すべての適切な言語ソートのリストおよびローカル・テリトリを戻すファンクション
Oracleの完全言語名と短縮言語名の間でマップするファンクション
指定した言語およびテリトリ名の言語変換を戻すファンクション
最も一般的に使用されるタイムゾーンのリストを戻すファンクション
UTL_I18N
パッケージのファンクションは、データベースの内容の読取りも変更も行いません。これらのファンクションは、ファンクションの引数でのみ操作を行うか、またはNLSデータ・ファイルから静的な国際化情報を取得します(あるいはその両方を行います)。このパッケージの実行権限は、デフォルトでPUBLIC
に付与されます。
UTL_I18N
パッケージでは、表226-1に示す定数が使用されます。
表226-1 UTL_I18Nの定数
定数 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
一般に使用するデフォルトのキャラクタ・セットを戻します。 |
|
|
|
Windows以外のプラットフォーム上で、Oracleのキャラクタ・セット名から電子メールで安全なキャラクタ・セット名にマップします。 |
|
|
|
Oracleのキャラクタ・セット名からIANAのキャラクタ・セット名にマップします。 |
|
|
|
|
|
|
|
IANAのキャラクタ・セット名からOracleのキャラクタ・セット名にマップします。 |
|
|
|
Oracleのキャラクタ・セット名と電子メールで安全なキャラクタ・セット名の間でマッピングが行われます。 |
|
|
|
Windowsプラットフォーム上で、Oracleのキャラクタ・セット名から電子メールで安全なキャラクタ・セット名にマップします。 |
|
|
|
|
|
|
|
全角カタカナのみを全角ひらがなに変換します。 |
|
|
|
全角カタカナのみを半角カタカナに変換します。 |
|
|
|
全角ひらがなのみを全角カタカナに変換します。 |
|
|
|
全角ひらがなのみを半角カタカナに変換します。 |
|
|
|
半角カタカナのみを全角カタカナに変換します。 |
|
|
|
半角カタカナのみを全角ひらがなに変換します。 |
|
|
|
すべてのタイプの仮名文字を全角カタカナに変換します。 |
|
|
|
すべてのタイプの仮名文字を全角ひらがなに変換します。 |
|
|
|
すべてのタイプの仮名文字を半角カタカナに変換します。 |
表226-2 UTL_I18Nパッケージのサブプログラム
プロシージャ | 説明 |
---|---|
|
指定したテキスト文字列をドキュメントのキャラクタ・セット以外の文字に対応する文字参照に変換します。 |
|
ロケールとは無関係な共通タイムゾーンIDのリストを戻します。 |
|
Oracleの言語名から、デフォルトのOracleのキャラクタ・セット名または電子メールで安全なデフォルトのキャラクタ・セット名を戻します。 |
GET_DEFAULT_ISO_CURRENCYファンクション |
指定したテリトリのデフォルトのISO 4217通貨コードを戻します。 |
GET_DEFAULT_LINGUISTIC_SORTファンクション |
指定した言語のデフォルトの言語ソート名を戻します。 |
|
指定したテリトリのローカル言語名を戻します。 |
GET_LOCAL_LINGUISTIC_SORTSファンクション |
指定した言語のローカル言語ソート名を戻します。 |
|
指定した言語のローカル・テリトリ名を戻します。 |
|
指定したテリトリのローカル・タイムゾーンIDを戻します。 |
|
指定した変換言語の言語およびテリトリ名の変換を戻します。 |
|
|
MAP_FROM_SHORT_LANGUAGEファンクション |
Oracleの短縮言語名をOracleの言語名にマップします。 |
|
ISOのロケール名からOracleの言語名を戻します。 |
|
Oracleの言語名およびテリトリ名からISOのロケール名を戻します。 |
|
ISOのロケール名からOracleのテリトリ名を戻します。 |
|
Oracleの言語名をOracleの短縮言語名にマップします。 |
|
データベース・キャラクタ・セットにエンコードされていない |
|
各国語キャラクタ・セットにエンコードされていない |
|
|
|
日本語のひらがなとカタカナの変換を実行します。 |
|
文字参照を含む入力文字列をテキスト文字列に変換します。 |
このファンクションは、テキスト文字列を現行のドキュメントで使用されているキャラクタ・セット以外の文字に対応する文字参照に変換します。文字参照は、ドキュメントのエンコーディングとは無関係に文字を表すためにHTMLドキュメントおよびXMLドキュメントで主に使用されます。文字参照は、数値文字参照および文字エンティティ参照の2つの形式で表示できます。数値文字参照では文字のUnicodeコード・ポイント値を指定し、文字エンティティ参照では同じ文字を参照するために記号名を使用します。たとえば、å
は上に丸の付いた小文字aを表す数値文字参照で、å
は同じ文字の文字エンティティ参照です。また、文字エンティティ参照を使用して、< (より小)記号を表す<
などの特殊文字をエスケープすることもできます。これによって、マークアップ言語のタグの開始で発生する可能性がある混同を回避します。
構文
UTL_I18N.ESCAPE_REFERENCE( str IN VARCHAR2 CHARACTER SET ANY_CS, page_cs_name IN VARCHAR2 DEFAULT NULL) RETURN VARCHAR2 CHARACTER SET str%CHARSET;
このファンクションは、最も一般的に使用されるタイムゾーンのリストを戻します。このリストには、データベースでサポートされているタイムゾーンのサブセットが示されます。
このファンクションは、Oracleの言語名から、デフォルトのOracleのキャラクタ・セット名またはデフォルトの電子メールで安全なキャラクタ・セット名を戻します。
構文
UTL_I18N.GET_DEFAULT_CHARSET( language IN VARCHAR2, context IN PLS_INTEGER DEFAULT GENERIC_CONTEXT, iswindows IN BOOLEAN DEFAULT FALSE) RETURN VARCHAR2;
パラメータ
表226-4 GET_DEFAULT_CHARSETファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
有効なOracle言語を指定します。 |
|
|
|
|
例
GENERIC_CONTEXT, iswindows=FALSE
UTL_I18N.GET_DEFAULT_CHARSET('French', UTL_I18N.GENERIC_CONTEXT, FALSE)
'WE8ISO8859P1'
が戻されます。
MAIL_CONTEXT, iswindows=TRUE
UTL_I18N.GET_DEFAULT_CHARSET('French', UTL_I18N.MAIL_CONTEXT, TRUE)
'WE8MSWIN1252
'が戻されます。
MAIL_CONTEXT, iswindows=FALSE
UTL_I18N.GET_DEFAULT_CHARSET('French', UTL_I18N.MAIL_CONTEXT, FALSE)
'WE8ISO8859P1
'が戻されます。
このファンクションは、指定した言語の最も一般的に使用されるOracle言語ソート名を戻します。
構文
UTL_I18N.GET_DEFAULT_LINGUISTIC_SORT ( language IN VARCHAR2 CHARACTER SET ANY_CS) RETURN VARCHAR2;
このファンクションは、指定したテリトリのローカル言語名を戻します。
例
ベルギーで使用されているローカル言語のリストを戻します。
DECLARE retval UTL_I18N.STRING_ARRAY; cnt INTEGER; BEGIN retval := UTL_I18N.GET_LOCAL_LANGUAGES('BELGIUM'); DBMS_OUTPUT.PUT('Count = '); DBMS_OUTPUT.PUT_LINE(retval.LAST); cnt := retval.FIRST; WHILE cnt IS NOT NULL LOOP DBMS_OUTPUT.PUT_LINE(retval(cnt)); cnt := retval.NEXT(cnt); END LOOP; END; / ... Count = 2 DUTCH FRENCH
このファンクションは、指定した言語に適したOracle言語ソート名のリストを戻します。BINARY
ソートはすべての言語に含まれています。
構文
UTL_I18N.GET_LOCAL_LINGUISTIC_SORTS ( language IN VARCHAR2 CHARACTER SET ANY_CS) RETURN STRING_ARRAY;
例
JAPANESE
のローカル言語ソート名を表示します。
DECLARE retval UTL_I18N.STRING_ARRAY; cnt INTEGER; BEGIN retval := UTL_I18N.GET_LOCAL_LINGUISTIC_SORTS('Japanese'); DBMS_OUTPUT.PUT('Count = '); DBMS_OUTPUT.PUT_LINE(retval.COUNT); cnt := retval.FIRST; WHILE cnt IS NOT NULL LOOP DBMS_OUTPUT.PUT_LINE(retval(cnt)); cnt := retval.NEXT(cnt); END LOOP; END; / ... Count = 2 JAPANESE_M BINARY
このファンクションは、指定した言語のローカル・テリトリ名を戻します。
例
ローカル言語の1つとしてドイツ語を使用するOracleテリトリのリストを戻します。
DECLARE retval UTL_I18N.STRING_ARRAY; cnt INTEGER; BEGIN retval := UTL_I18N.GET_LCOAL_TERRITORIIES('GERMAN'); DBMS_OUTPUT.PUT('Count = '); DBMS_OUTPUT.PUT_LINE(retval.LAST); cnt := retval.FIRST; WHILE cnt IS NOT NULL LOOP DBMS_OUTPUT.PUT_LINE(retval(cnt)); cnt := retval.NEXT(cnt)); END LOOP; END; / ... Count = 4 GERMANY AUSTRIA LUXEMBOURG SWITZERLAND
このファンクションは、指定したテリトリのローカル・タイムゾーンIDを戻します。
構文
UTL_I18N.GET_LOCAL_TIME_ZONES ( territory IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL) RETURN STRING_ARRAY;
例
テリトリAZERBAIJAN
でローカルに使用されているタイムゾーンのリストの後に一般的な共通タイムゾーンを戻すファンクションを作成します。このファンクションは、ユーザーのテリトリがわかっていて、アプリケーションでユーザーが他のタイムゾーンをユーザーのプリファレンスとして選択できる場合に有効です。
CREATE OR REPLACE FUNCTION get_time_zones (territory IN VARCHAR2 CHARACTER SET ANY_CS) RETURN utl_i18n.string_array IS retval utl_i18n.string_array; retval2 utl_i18n.string_array; stpos INTEGER; BEGIN retval := utl_i18n.get_local_time_zones( territory); retval2 := utl_i18n.get_common_time_zones; stpos := retval.LAST + 1; retval(stpos) := '-----'; -- a separator FOR i IN retval2.FIRST..retval2.LAST LOOP stpos := stpos + 1; retval(stpos) := retval2(i); END LOOP; RETURN retval; END; /
AZERBAIJAN
のローカル・タイムゾーンが戻され、続いてセパレータ文字列である5つのダッシュ(-----)の下に共通タイムゾーンが戻されます。
DECLARE retval UTL_I18N.STRING_ARRAY; cnt INTEGER; BEGIN DBMS_OUTPUT.ENABLE(100000); retval UTL_I18N.GET_TIME_ZONES('AZERBAIJAN'); cnt := retval.FIRST; WHILE cnt IS NOT NULL LOOP DBMS_OUTPUT.PUT_LINE(retval(cnt)); cnt := retval.NEXT(cnt); END LOOP; END; / Asia/Baku ----- Pacific/Pago_Pago Pacific/Honolulu America/Anchorage America/Vancouver America/Los_Angeles America/Tijuana America/Edmonton America/Denver America/Phoenix America/Mazatlan America/Winnipeg America/Regina America/Chicago America/Mexico_City America/Guatemala America/El_Salvador America/Managua America/Costa_Rica America/Montreal ...
このファンクションは、指定した変換言語の言語およびテリトリ名の変換を戻します。
構文
UTL_I18N.GET_TRANSLATION ( parameter IN VARCHAR2 CHARACTER SET ANY_CS, trans_language IN VARCHAR2 'AMERICAN', flag IN PLS_INTEGER DEFAULT LANGUAGE_TRANS) RETURN VARCHAR2 CHARACTER SET parameter%CHARSET;
パラメータ
表226-11 GET_TRANSLATIONファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
有効な言語名、テリトリ名または |
|
変換言語名を指定します。たとえば、イタリア語の場合は |
|
変換タイプを指定します。
デフォルトの変換タイプは |
このファンクションは、次のマッピングを行います。
Oracleのキャラクタ・セット名からIANAのキャラクタ・セット名へのマッピング。
IANAのキャラクタ・セット名からOracleのキャラクタ・セット名へのマッピング。
Oracleのキャラクタ・セット名から電子メールで安全なキャラクタ・セット名へのマッピング。
構文
UTL_I18N.MAP_CHARSET( charset IN VARCHAR2, context IN PLS_INTEGER DEFAULT GENERIC_CONTEXT, flag IN PLS_INTEGER DEFAULT ORACLE_TO_IANA) RETURN VARCHAR2;
パラメータ
表226-12 MAP_CHARSETファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
マップするキャラクタ・セット名を指定します。マッピングでは大文字と小文字は区別されません。 |
|
|
|
|
使用上の注意
電子メールで安全なキャラクタ・セットとは、アプリケーションで電子メール・メッセージを送信するとき通常に使用されるOracleのキャラクタ・セットのことです。通常、このキャラクタ・セットは、データベース・キャラクタ・セットの内容を電子メールで安全な内容に変換するために使用されます。メール・ヘッダーにキャラクタ・セット名を指定するには、MAP_CHARSET
ファンクションにORACLE_TO_IANA
オプションを指定してコールすることによって取得される、対応するIANAのキャラクタ・セット名を使用して、電子メールで安全なキャラクタ・セット名を入力として指定する必要があります。
たとえば、対応するIANA名がDEC-MCS
であるWE8DEC
キャラクタ・セットのメッセージ内容を認識できる電子メール・クライアントは存在しません。WE8DEC
が、MAIL_CONTEXT
オプションを指定したMAP_CHARSET
ファンクションに渡されると、ファンクションはWE8ISO8859P1
を戻します。これに対応するIANA名であるISO-8859-1
は、ほとんどの電子メール・クライアントで認識されます。
この例の手順は次のとおりです。
データベース・キャラクタ・セット名WE8DEC
をMAIL_CONTEXT | MAIL_GENERIC
オプションに指定して、MAP_CHARSET
ファンクションをコールします。この結果WE8ISO8859P1
が戻されます。
データベースに格納されている内容を、WE8ISO8859P1
に変換します。
電子メールで安全なキャラクタ・セットWE8ISO8859P1
をORACLE_TO_IANA | GENERIC_CONTEXT
オプションに指定して、MAP_CHARSET
ファンクションをコールします。この結果ISO-8859-1
が戻されます。
電子メール・メッセージの送信時に、メール・ヘッダーにISO-8859-1
を指定します。
一致するものが見つかると、ファンクションはキャラクタ・セット名を戻します。一致するものが見つからないか、フラグが無効の場合、ファンクションはNULL
を戻します。
注意: Oracleのキャラクタ・セットの多くは、電子メールで安全な1つのキャラクタ・セットに対してマップできます。電子メールで安全なキャラクタ・セットをOracleのキャラクタ・セット名にマップするファンクションはありません。 |
例
一般的なコンテキスト
UTL_I18N.MAP_CHARSET('iso-8859-1',UTL_I18N.GENERIC_CONTEXT,UTL_I18N.IANA_TO_ORACLE)
'WE8ISO8859P1'
が戻されます。
コンテキスト
UTL_I18N.MAP_CHARSET('WE8DEC', utl_i18n.mail_context, utl_i18n.mail_generic)
'WE8ISO8859P1'
が戻されます。
関連項目: 有効なOracleのキャラクタ・セットのリストは、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。 |
このファンクションは、Oracleの短縮言語名をOracleの言語名にマップします。
例
IDが9000の顧客のデフォルトの言語ソート名を戻します。表customers
は共通スキーマのoe
ユーザーから取得されます。顧客の言語プリファレンスは短縮言語名で格納されるため、GET_DEFAULT_LINGUISTIC_SORT
プロシージャをコールして完全言語名に変換する必要があります。
DECLARE short_n VARCHAR2(10); ling_n VARCHAR2(50); BEGIN SELECT nls_language INTO short FROM customers WHERE customer_id = 9000; ling_n := UTL_I18N.GET_DEFAULT_LINGUISTIC_SORT ( UTL_I18N.MAP_FROM_SHORT_LANGUAGE(short_n)); DBMS_OUTPUT.PUT_LINE(ling_n); END; /
このファンクションは、ISOのロケール名からOracleの言語名を戻します。
このファンクションは、Oracleの言語名およびOracleのテリトリ名からISOのロケール名を戻します。有効な文字列には、少なくとも有効なOracleの言語名または有効なOracleのテリトリ名のいずれかが指定されている必要があります。
構文
UTL_I18N.MAP_LOCALE_TO_ISO ( ora_language IN VARCHAR2, ora_territory IN VARCHAR2) RETURN VARCHAR2;
このファンクションは、ISOのロケールからOracleのテリトリ名を戻します。
このファンクションは、有効なOracleのキャラクタ・セットのRAW
データを、データベース・キャラクタ・セットのVARCHAR2
文字列に変換します。
このファンクションはオーバーロードされています。機能の各種形式は、構文宣言の箇所に併記してあります。
構文
バッファ変換:
UTL_I18N.RAW_TO_CHAR( data IN RAW, src_charset IN VARCHAR2 DEFAULT NULL) RETURN VARCHAR2;
ピース単位の変換では、生データが1つずつ文字データに変換されます。
UTL_I18N.RAW_TO_CHAR ( data IN RAW, src_charset IN VARCHAR2 DEFAULT NULL, scanned_length OUT PLS_INTEGER, shift_status IN OUT PLS_INTEGER) RETURN VARCHAR2;
パラメータ
表226-18 RAW_TO_CHARファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
|
スキャンするソース・データのバイト数を指定します。 |
|
スキャン終了時のシフト状態を指定します。ピース単位の変換で初めてコールするときは、 注意: ISO 2022キャラクタ・セットでは、エンコード方法を示すためにシフト文字ではなくエスケープ・シーケンスが使用されます。 |
例
バッファ変換
UTL_I18N.RAW_TO_CHAR(hextoraw('616263646566C2AA'), 'utf8')
次の文字列がデータベース・キャラクタ・セットで戻されます。
'abcde'||chr(170)
ピース単位の変換
UTL_I18N.RAW_TO_CHAR(hextoraw('616263646566C2AA'),'utf8',shf,slen)
次の文字列がデータベース・キャラクタ・セットで戻されます。
'abcde'||chr(170)
さらに、shf
がSHIFT_IN
に、slen
が8
に設定されます。
次の例では、インターネットからのデータを1つずつデータベース・キャラクタ・セットに変換します。
rvalue RAW(1050); nvalue VARCHAR2(1024); conversion_state PLS_INTEGER = 0; converted_len PLS_INTEGER; rtemp RAW(10) = ''; conn utl_tcp.connection; tlen PLS_INTEGER; ... conn := utl_tcp.open_connection ( remote_host => 'localhost', remote_port => 2000); LOOP tlen := utl_tcp.read_raw(conn, rvalue, 1024); rvalue := utl_raw.concat(rtemp, rvalue); nvalue := utl_i18n.raw_to_char(rvalue, 'JA16SJIS', converted_len, conversion_stat); if (converted_len < utl_raw.length(rvalue) ) then rtemp := utl_raw.substr(rvalue, converted_len+1); else rtemp := ''; end if; /* do anything you want with nvalue */ /* e.g htp.prn(nvalue); */ END LOOP; utl_tcp.close_connection(conn); EXCEPTION WHEN utl_tcp.end_of_input THEN utl_tcp.close_connection(conn); END;
このファンクションは、有効なOracleのキャラクタ・セットのRAW
データを、各国語キャラクタ・セットのNVARCHAR2
文字列に変換します。
このファンクションはオーバーロードされています。機能の各種形式は、構文宣言の箇所に併記してあります。
構文
バッファ変換:
UTL_I18N.RAW_TO_NCHAR ( data IN RAW, src_charset IN VARCHAR2 DEFAULT NULL) RETURN NVARCHAR2;
ピース単位の変換では、生データが1つずつ文字データに変換されます。
UTL_I18N.RAW_TO_NCHAR ( data IN RAW, src_charset IN VARCHAR2 DEFAULT NULL, scanned_length OUT PLS_INTEGER, shift_status IN OUT PLS_INTEGER) RETURN NVARCHAR2;
パラメータ
表226-19 RAW_TO_NCHARファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
|
スキャンするソース・データのバイト数を指定します。 |
|
スキャン終了時のシフト状態を指定します。ピース単位の変換で初めてコールするときは、 注意: ISO 2022キャラクタ・セットでは、エンコード方法を示すためにシフト文字ではなくエスケープ・シーケンスが使用されます。 |
例
バッファ変換
UTL_I18N.RAW_TO_NCHAR(hextoraw('616263646566C2AA'),'utf8')
次の文字列が各国語キャラクタ・セットで戻されます。
'abcde'||chr(170)
ピース単位の変換
UTL_I18N.RAW_TO_NCHAR(hextoraw('616263646566C2AA'),'utf8', shf, slen)
次の文字列が各国語キャラクタ・セットで戻されます。
'abcde'||chr(170)
さらに、shf
がSHIFT_IN
に、slen
が8
に設定されます。
次の例では、インターネットからのデータを1つずつ各国語キャラクタ・セットに変換します。
rvalue RAW(1050); nvalue NVARCHAR2(1024); converstion_state PLS_INTEGER = 0; converted_len PLS_INTEGER; rtemp RAW(10) = ''; conn utl_tcp.connection; tlen PLS_INTEGER; ... conn := utl_tcp.open_connection ( remote_host => 'localhost', remote_port => 2000); LOOP tlen := utl_tcp.read_raw(conn, rvalue, 1024); rvalue := utl_raw.concat(rtemp, rvalue); nvalue := utl_i18n.raw_to_nchar(rvalue, 'JA16SJIS', converted_len, conversion_stat); if (converted_len < utl_raw.length(rvalue) ) then rtemp := utl_raw.substr(rvalue, converted_len+1); else rtemp := ''; end if; /* do anything you want with nvalue */ /* e.g htp.prn(nvalue); */ END LOOP; utl_tcp.close_connection(conn); EXCEPTION WHEN utl_tcp.end_of_input THEN utl_tcp.close_connection(conn); END;
このファンクションは、VARCHAR2
またはNVARCHAR2
の文字列を別の有効なOracleのキャラクタ・セットに変換し、その結果をRAW
データとして戻します。
構文
UTL_I18N.STRING_TO_RAW( data IN VARCHAR2 CHARACTER SET ANY_CS, dst_charset IN VARCHAR2 DEFAULT NULL) RETURN RAW;
このファンクションは、スクリプト変換を実行します。このリリースでは、TRANSLITERATE
ファンクションは日本語の仮名変換のみをサポートします。
構文
UTL_I18N.TRANSLITERATE ( data IN VARCHAR2 CHARACTER SET ANY_CS, name IN VARCHAR2) RETURN VARCHAR2 CHARACTER SET data%CHARSET;
パラメータ
表226-21 TRANSLITERATEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
変換するデータを指定します。 |
|
変換名文字列を指定します。有効な名前のリストについては、表226-22を参照してください。 |
定数
次のオプションは、日本語の仮名変換を指定します。
表226-22 TRANSLITERATEファンクションの定数
定数名 | 値 | 説明 |
---|---|---|
|
|
すべてのタイプの仮名文字を全角カタカナに変換します。 |
|
|
すべてのタイプの仮名文字を半角カタカナに変換します。 |
|
|
すべてのタイプの仮名文字を全角ひらがなに変換します。 |
|
|
全角カタカナのみを半角カタカナに変換します。 |
|
|
全角カタカナのみを全角ひらがなに変換します。 |
|
|
半角カタカナのみを全角カタカナに変換します。 |
|
|
半角カタカナのみを全角ひらがなに変換します。 |
|
|
全角ひらがなのみを全角カタカナに変換します。 |
|
|
全角ひらがなのみを半角カタカナに変換します。 |
例
NVARCHAR2
列ename
を含む表japanese_emp
の場合は、次の文を使用して、ename
のすべての仮名の名前をひらがなに正規化することができます。
UPDATE japanese_emp SET ename = UTL_I18N.TRANSLITERATE (ename, 'kana_hiragana');
次の図に、出力例を示します。
次の文は、1つの仮名の名前をひらがなに正規化します。
DECLARE Name japanese_emp.ename%TYPE; Eno CONSTANT NUMBER(4) := 1; BEGIN SELECT ename INTO name FROM japanese_emp WHERE enumber = eno; name := UTL_I18N.TRANSLITERATE(name, UTL_I18N.KANA_HIRAGANA); UPDATE japanese_emp SET ename = name WHERE enumber = eno; EXCEPTION WHEN UTL_I18N.UNSUPPORTED_TRANSLITERATION THEN DBMS_OUTPUT.PUT_LINE('transliteration not supported'); END; /