ヘッダーをスキップ
Oracle® Database 2日で開発者ガイド
12c リリース1 (12.1)
B71350-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

7 グローバル環境での作業

この章の内容は、次のとおりです。

グローバリゼーション・サポート機能について

グローバリゼーション・サポート機能により、世界のどこからでも同時に実行できる多言語アプリケーションを開発できるようになります。アプリケーションにより、ユーザー・インタフェースの内容をレンダリングし、各国語およびユーザーのロケール・プリファレンスでデータを処理できます。


注意:

以前は、グローバリゼーション・サポートを各国語サポート(NLS)と呼んでいましたが、実際にはNLSはグローバリゼーション・サポートのサブセットです。NLSは、各国の言語を選択し、特定のキャラクタ・セットを使用してデータを格納する機能です。NLSは、NLSパラメータで実装します。

この項の内容は次のとおりです。


参照:

グローバリゼーション・サポート機能の詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

言語サポートについて

Oracle Databaseでは、データを各国語で格納、処理、取得できます。データベースには、Oracleがサポートするキャラクタ・セットでエンコードされたスクリプトに記述されているすべての言語を格納できます。Unicodeデータベースとデータ型を使用することで、Oracle Databaseは、ほとんどの現代言語をサポートしています。

一部の言語では、さらなるサポートも利用可能です。たとえばデータベースで、翻訳した月の名前を使用して日付を表示したり、文化的慣習に従ってテキスト・データをソートすることができます。

このマニュアルでは、言語サポートという用語は、特定の言語のテキストを格納する機能ではなく、追加の言語依存機能を指します。たとえば言語サポートには、特定のロケールや文化的慣習による、日付の表示やテキストのソートが含まれます。また、サポートされる言語の一部には、Oracle Databaseによりデータベース・ユーティリティ用に翻訳されたサーバー・メッセージおよび翻訳されたユーザー・インタフェースが提供されます。


参照:

  • 「NLS_LANGUAGEパラメータについて」

  • Oracle Databaseがサポートする言語のリストは、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

  • Oracle Databaseのメッセージが翻訳されている言語のリストは、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。


地域サポートについて

Oracle Databaseでは、地域に固有の文化的慣習がサポートされています。デフォルトのローカル時刻書式、日付書式、数値および通貨に関する規則はローカル地域設定によって異なります。異なるNLSパラメータを設定することにより、データベース・セッションにおいて異なる文化的設定を使用できます。たとえば、地域がAMERICAの場合であっても、指定したデータベース・セッションに対する基本通貨としてユーロ(EUR)を設定し、補助通貨として日本円(JPY)を設定できます。


参照:


日付および時刻書式について

国によって、時刻、曜日、月および年の表記規則は異なります。次に例を示します。

日付書式 時刻書式
中国 yyyy-mm-dd 2005-02-28 hh24:mi:ss 13:50:23
エストニア dd.mm.yyyy 28.02.2005 hh24:mi:ss 13:50:23
ドイツ dd.mm.rr 28.02.05 hh24:mi:ss 13:50:23
英国 dd/mm/yyyy 28/02/2005 hh24:mi:ss 13:50:23
米国 mm/dd/yyyy 02/28/2005 hh:mi:ssxff am 1:50:23.555 PM


参照:


カレンダ書式について

Oracle Databaseでは、地域ごとに次のカレンダ情報を格納します。

  • 週の最初の曜日

    ある文化では日曜日ですが、別の文化では月曜日です。 NLS_TERRITORYパラメータで設定します。

  • 年の最初の暦週

    一部の国では、週番号を使用してスケジューリング、計画および会計処理を行います。ISO規格では、暦年の週番号とは異なる週番号を使用できます。たとえば、2005年1月1日は、2004年のISOの週番号53となります。ISOの週は月曜日に始まり、日曜日に終わります。ISO規格をサポートするために、Oracle DatabaseにはIW日付書式要素が用意され、これによってISO週番号が返されます。年の最初の暦週はNLS_TERRITORYパラメータで設定します。

  • 1年の日数および月数

    Oracle Databaseでは、デフォルトのグレゴリオ暦の他に、次の6つの暦法をサポートしています。これらの暦法は次のとおりです。

    • Japanese Imperial(日本の元号暦)

      グレゴリオ暦と同じ月数と日数ですが、年は元号ごとに始まります。

    • ROC Official(台湾暦)

      グレゴリオ暦と同じ月数と日数ですが、年は台湾の建国年から始まります。

    • Persian(ペルシャ暦)

      最初の6か月の日数がそれぞれ31日、次の5か月はそれぞれ30日、最後の月は29日または30日(うるう年)です。

    • Thai Buddha(タイ仏教暦): 仏教のカレンダを使用します。

    • Arabic Hijrah(イスラム歴): 月数が12で、日数が354または355です。

    • English Hijrah(英語版イスラム歴): 月数が12で、日数が354または355です。

    暦法はNLS_CALENDARパラメータで指定します。

  • 紀元の年

    イスラム暦はヒジュラ紀元の年から始まります。日本の元号暦は天皇が即位した最初の年から始まります(たとえば、1998年は平成10年となります)。


参照:


数値および通貨の書式について

国によって、数値と通貨の規則は異なります。次に例を示します。

数値書式 通貨書式
中国 1,234,567.89 ¥1,234.56
エストニア 1 234 567,89 1 234,56 kr
ドイツ 1.234.567,89 1.234,56
英国 1,234,567.89 £1,234.56
米国 1,234,567.89 $1,234.56


参照:


言語ソートと文字列検索について

ソート順序(照合順序)は言語によって異なります。また、国や文化が異なると、同じアルファベットでも単語のソート方法が異なります。たとえば、デンマークでは、Zの後にÆがあり、YおよびÜは同じ文字の変形とみなされます。


参照:


長さセマンティクスについて

シングルバイト・キャラクタ・セットの場合、文字列のバイト数と文字数は同じです。マルチバイト・キャラクタ・セットの場合は、1文字または1つのコード・ポイントが1つ以上のバイトで構成されています。可変幅キャラクタ・セットの場合は、バイト長に基づく文字数の計算が困難な場合があります。列の長さをバイト数単位で計算することをバイト・セマンティクス、文字数単位で計算することをキャラクタ・セマンティクスと呼びます。

キャラクタ・セマンティクスは、可変幅のマルチバイト文字列の格納要件を指定する場合に役立ちます。たとえば、Unicodeデータベース(AL32UTF8)に、5文字の英語文字とともに最大5文字の中国語文字を格納できるVARCHAR2列が必要であるとします。バイト・セマンティクスを使用すると、この列には、長さ3バイトである中国語文字用に15バイトと、長さ1バイトである英語文字用に5バイト、合計20バイトが必要です。キャラクタ・セマンティクスを使用すると、この列に必要な文字数は10となります。


参照:


UnicodeおよびSQL各国語キャラクタ・データ型について

Unicodeは、世界で話されているほとんどの言語のすべての文字を定義した、文字をエンコードするためのシステムです。Unicodeでは、プラットフォーム、プログラムまたは言語を問わず、すべての文字に一意のコードがあります。

Unicode文字は、Oracle Databaseにおいて次の2つの方法で格納できます。

  • Unicodeデータベースを作成すると、UTF-8でエンコードされた文字をSQL文字データ型(CHARVARCHAR2CLOBおよびLONG)として格納できます。

  • SQL各国語キャラクタ・データ型の列や変数を宣言できます。

SQL各国語キャラクタ・データ型には、NCHARNVARCHAR2およびNCLOBがあります。これらはUnicodeデータの格納のみに使用するので、Unicodeデータ型とも呼ばれます。

すべてのSQL各国語キャラクタ・データ型に使用する各国語キャラクタ・セットは、データベースの作成時に指定します。各国語キャラクタ・セットはUTF8またはAL16UTF16(デフォルト)のいずれかに設定できます。

型がNCHARNVARCHAR2の列や変数を宣言する場合、指定する長さはバイト数ではなく文字数になります。


参照:

  • Unicodeの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

  • Oracle DatabaseでのUnicode文字の格納の詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

  • SQL各国語キャラクタ・データ型の詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。


NLSパラメータの初期値について

SQL Developerを除いて、NLSパラメータの初期値は、データベース初期化パラメータによって設定されます。DBAは初期化パラメータ・ファイルで初期化パラメータの値を設定でき、その設定は次回データベースが起動されたときに有効になります。

SQL DeveloperでのNLSパラメータの初期値を表7-1に示します。

表7-1 SQL DeveloperでのNLSパラメータの初期値

パラメータ 初期値

NLS_CALENDAR

GREGORIAN

NLS_CHARACTERSET

AL32UTF8

NLS_COMP

BINARY

NLS_CURRENCY

$


NLS_DATE_FORMAT

DD-MON-RR

NLS_DATE_LANGUAGE

AMERICAN

NLS_DUAL_CURRENCY

$


NLS_ISO_CURRENCY

AMERICA

NLS_LANGUAGE

AMERICAN

NLS_LENGTH_SEMANTICS

BYTE

NLS_NCHAR_CHARACTERSET

AL16UTF16

NLS_NCHAR_CONV_EXCP

FALSE

NLS_NUMERIC_CHARACTERS

.,

NLS_SORT

BINARY

NLS_TERRITORY

AMERICA

NLS_TIMESTAMP_FORMAT

DD-MON-RR HH.MI.SSXFF AM

NLS_TIMESTAMP_TZ_FORMAT

DD-MON-RR HH.MI.SSXFF AM TZR

NLS_TIME_FORMAT

HH.MI.SSXFF AM

NLS_TIME_TZ_FORMAT

HH.MI.SSXFF AM TZR



参照:

初期化パラメータと初期化パラメータ・ファイルの詳細は、『Oracle Database管理者ガイド』を参照してください。

NLSパラメータ値の表示

NLSパラメータの現在の値を表示するには、SQL Developerの各国語サポート・パラメータ・レポートを使用します。

各国語サポート・パラメータ・レポートを表示するには、次の手順を実行します。

  1. SQL Developerメニューの「ビュー」メニューで、「レポート」を選択します。

  2. 「レポート」ペインで、「データ・ディクショナリ・レポート」を展開します。

  3. レポートのリストで、「データベース情報」を展開します。

  4. レポートのリストで、「各国語サポート・パラメータ」を選択します。

  5. 「接続の選択」ウィンドウで、hr_connを選択します。

  6. 「OK」をクリックします。

    「接続の選択」ウィンドウが閉じて、「各国語サポート・パラメータ」ペインが表示され、NLSパラメータの名前と現在の値が表示されます。


参照:

SQL Developerレポートの詳細は、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。

NLSパラメータ値の変更

1つ以上のNLSパラメータの値を、次のいずれかの方法で変更できます。

  • 現在および今後の、すべてのSQL Developer接続の値を変更します。

  • クライアントで、対応するNLS環境変数の設定を変更します。

    クライアントでのみ、NLS環境変数の新しい値によって、対応するNLSパラメータの値を上書きします。

    環境変数を使用して、クライアントのロケール依存動作を指定できます。たとえば、Linuxシステムで、次の文はNLS_SORT環境変数の値をFRENCHに設定し、NLS_SORTパラメータの値を上書きします。

    % setenv NLS_SORT FRENCH
    

    注意:

    環境変数はプラットフォーム依存である場合があります。

  • ALTER SESSION文を次の構文で使用して、現在のセッションの値のみを変更します。

    ALTER SESSION SET parameter_name=parameter_value
      [ parameter_name=parameter_value ]... ;
    

    現在のセッションでのみ、前述のすべての方法で設定された値を、新しい値で上書きします。

    ALTER SESSIONを使用して、異なるロケールの設定でアプリケーションをテストできます。

  • 現在のSQLファンクション起動の値のみを変更します。

    現在のSQLファンクション起動についてのみ、前述のすべての方法で設定された値を、新しい値で上書きします。

この項の内容は次のとおりです。


参照:

  • ALTER SESSION文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

  • NLSパラメータの設定の詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。


すべてのSQL Developer接続に対するNLSパラメータ値の変更

次の手順では、現在および今後の、すべてのSQL Developer接続に対するNLSパラメータの値を変更する方法を示します。

各国語サポート・パラメータ値を変更するには、次の手順を実行します。

  1. SQL Developerメニューの「ツール」メニューで、「プリファレンス」を選択します。

  2. 「プリファレンス」ウィンドウの左のフレームで、「データベース」を展開します。

  3. データベース・プリファレンスのリストで、「NLS」をクリックします。

    NLSパラメータとその現在値が表示されます。値フィールドはメニューになっています。

  4. 値を変更する各パラメータの右側にあるメニューで、必要な値を選択します。

  5. 「OK」をクリックします。

    これで、NLSパラメータが、指定した値になります。これらの値を確認するには、「NLSパラメータ値の表示」を参照してください。


注意:

NLSパラメータ値に変更が反映されない場合、「レポートの実行」アイコンをクリックします。


参照:

SQL Developerのプリファレンスの詳細は、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。

現在のSQLファンクション起動に対するNLSパラメータ値の変更

動作がNLSパラメータの値に依存するSQLファンクションはロケール依存と呼ばれます。ロケール依存のSQLファンクションの一部には、オプションのNLSパラメータがあります。これらのファンクションを次に示します。

  • TO_CHAR

  • TO_DATE

  • TO_NUMBER

  • NLS_UPPER

  • NLS_LOWER

  • NLS_INITCAP

  • NLSSORT

前述のファンクションでは、次のNLSパラメータを指定できます。

  • NLS_DATE_LANGUAGE

  • NLS_DATE_LANGUAGE

  • NLS_NUMERIC_CHARACTERS

  • NLS_CURRENCY

  • NLS_ISO_CURRENCY

  • NLS_DUAL_CURRENCY

  • NLS_CALENDAR

  • NLS_SORT

NLSSORTファンクションでは、次のNLSパラメータも指定できます。

  • NLS_LANGUAGE

  • NLS_TERRITORY

  • NLS_DATE_FORMAT

ファンクションでNLSパラメータを指定するには、次の構文を使用します。

'parameter=value' ['parameter=value']...

次の問合せを評価するときに、NLS_DATE_LANGUAGEAMERICANにすると想定します。

SELECT last_name FROM employees WHERE hire_date > '01-JAN-1999';

問合せを実行する前に、NLS_DATE_LANGUAGEAMERICANに設定できます。

ALTER SESSION SET NLS_DATE_LANGUAGE=American;
SELECT last_name FROM employees WHERE hire_date > '01-JAN-1999';

または、ロケール依存のSQLファンクションTO_DATEにオプションのNLS_DATE_LANGUAGEパラメータを使用して、問合せの内部でNLS_DATE_LANGUAGEAMERICANに設定できます。

SELECT last_name FROM employees
WHERE hire_date > TO_DATE('01-JAN-1999', 'DD-MON-YYYY',
                          'NLS_DATE_LANGUAGE=AMERICAN');

ヒント:

通常、SQLファンクションでNLSパラメータにセッションのデフォルト値を使用すると、パフォーマンスが改善されます。このため、デフォルトのNLSパラメータ値を使用する必要がないSQL文の場合にのみ、ロケール依存のSQLファンクションでオプションのNLSパラメータを指定します。


参照:

オプションのNLSパラメータがある、ロケール依存のSQLファンクションの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

各NLSパラメータについて

この項の内容は次のとおりです。


参照:

  • グローバリゼーション・サポート環境の設定の詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

  • 「NLSパラメータ値の変更」


ロケールとNLS_LANGパラメータについて

ロケールとは、システムやアプリケーションを実行する言語的および文化的環境のことです。Oracle Database ソフトウェアでロケールを指定する最も簡単な方法は、NLS_LANGパラメータを設定することです。

NLS_LANGパラメータにより、サーバー・セッション(SQL文の処理など)とクライアント・アプリケーション(Oracle Databaseツールの表示の書式など)の両方に対するNLS_LANGUAGENLS_TERRITORYパラメータのデフォルト値を設定できます。また、NLS_LANGパラメータで、入力または表示されるデータに対してクライアント・アプリケーションが使用するキャラクタ・セットも設定できます。

NLS_LANGのデフォルト値は、データベースのインストール中に設定されます。 ALTER SESSION文を使用して、NLS_LANGで設定されるものも含めて、セッションに対するNLSパラメータの値を変更できます。ただし、クライアント環境のNLS設定を変更できるのは、そのクライアントのみです。


参照:


NLS_LANGUAGEパラメータについて

指定内容: データベースのデフォルト言語。次の項目に対するデフォルト規則を指定します。

  • サーバー・メッセージの言語

  • 曜日および月の名前と略称の言語は、SQLファンクションTO_CHARおよびTO_DATEで指定されます

  • AM、PM、ADおよびBCに相当する、デフォルト言語の記号

  • ORDER BY句が指定された場合の、文字データに対するデフォルトのソート順序

  • 記述方向

  • 肯定および否定応答の文字列(たとえばYESNO)

許容可能な値: Oracleがサポートする言語名。リストは、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

デフォルト値: NLS_LANGによって設定されます。詳細は、「ロケールとNLS_LANGパラメータについて」を参照してください。

デフォルト値の設定対象:

例7-1では、NLS_LANGUAGEITALIANおよびGERMANに設定した場合に、サーバー・メッセージや月の略称にどのように影響するかを示します。

この例をSQL Developerで試す場合は、ワークシートに文や問合せを入力します。ワークシートの詳細は、「SQL Developerにおける問合せの実行」を参照してください。ここに示す結果はSQL*Plusによるもので、SQL Developerとは書式が若干異なります。

例7-1 NLS_LANGUAGEによるサーバー・メッセージおよび月の略称への影響

  1. NLS_LANGUAGEの現在の値を書き留めます。

  2. 手順1の値がITALIANでない場合は変更します。

    ALTER SESSION SET NLS_LANGUAGE=ITALIAN;
    
  3. 存在しない表に問合せをします。

    SELECT * FROM nonexistent_table;
    

    結果:

    SELECT * FROM nonexistent_table
                  *
    ERROR at line 1:
    ORA-00942: tabella o vista inesistente
    
  4. 次の問合せを実行します。

    SELECT LAST_NAME, HIRE_DATE
    FROM EMPLOYEES
    WHERE EMPLOYEE_ID IN (111, 112, 113);
    

    結果:

    LAST_NAME                 HIRE_DATE
    ------------------------- ---------
    Sciarra                   30-SET-97
    Urman                     07-MAR-98
    Popp                      07-DIC-99
     
    3 rows selected.
    
  5. NLS_LANGUAGEの値をGERMANに変更します。

    ALTER SESSION SET NLS_LANGUAGE=GERMAN;
    
  6. 手順3の問合せを繰り返します。

    結果:

    SELECT * FROM nonexistent_table
                  *
    ERROR at line 1:
    ORA-00942: Tabelle oder View nicht vorhanden
    
  7. 手順4の問合せを繰り返します。

    結果:

    LAST_NAME                 HIRE_DATE
    ------------------------- ---------
    Sciarra                   30-SEP-97
    Urman                     07-MRZ-98
    Popp                      07-DEZ-99
     
    3 rows selected.
    
  8. NLS_LANGUAGEを手順1の値に設定します。


参照:


NLS_TERRITORYパラメータについて

指定内容: 次の項目に対するデフォルト規則

  • 日付書式

  • タイムスタンプ書式

  • 小数点文字およびグループ・セパレータ

  • 各国通貨記号

  • ISO通貨記号

  • 二重通貨記号

許容可能な値: Oracleがサポートする地域名。リストは、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

デフォルト値: NLS_LANGによって設定されます。詳細は、「ロケールとNLS_LANGパラメータについて」を参照してください。

デフォルト値の設定対象:

例7-2では、NLS_TERRITORYJAPANおよびAMERICAに設定した場合に、通貨記号にどのように影響するかを示します。

この例をSQL Developerで試す場合は、ワークシートに文や問合せを入力します。ワークシートの詳細は、「SQL Developerにおける問合せの実行」を参照してください。ここに示す結果はSQL*Plusによるもので、SQL Developerとは書式が若干異なります。

例7-2 NLS_TERRITORYによる通貨記号への影響

  1. NLS_TERRITORYの現在の値を書き留めます。

  2. 手順1の値がJAPANでない場合は変更します。

    ALTER SESSION SET NLS_TERRITORY=JAPAN;
    
  3. 次の問合せを実行します。

    SELECT TO_CHAR(SALARY,'L99G999D99') SALARY
    FROM EMPLOYEES
    WHERE EMPLOYEE_ID IN (100, 101, 102);
    

    結果:

    SALARY
    --------------------
              ¥24,000.00
              ¥17,000.00
              ¥17,000.00
     
    3 rows selected.
    
  4. NLS_TERRITORYの値をAMERICAに変更します。

    ALTER SESSION SET NLS_TERRITORY=AMERICA;
    
  5. 手順3の問合せを繰り返します。

    結果:

    SALARY
    --------------------
              $24,000.00
              $17,000.00
              $17,000.00
     
    3 rows selected.
    
  6. NLS_TERRITORYを手順1の値に設定します。


参照:


NLS_DATE_FORMATパラメータについて

指定内容: TO_CHARおよびTO_DATEファンクション(「問合せにおける変換ファンクションの使用」を参照)で使用するデフォルトの日付書式。

許容可能な値: 有効な任意の日付時間書式モデル。次に例を示します。

NLS_DATE_FORMAT='MM/DD/YYYY'

日付時間書式モデルの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

デフォルト値: NLS_TERRITORYによって設定されます。詳細は、「NLS_TERRITORYパラメータについて」を参照してください。

デフォルトの日付書式が、特定の地域で使用される規則に対応していない場合があります。ローカライズされた書式で日付を取得するために、'DS'(短い日付)書式および'DL'(長い日付)書式を使用できます。

例7-3では、NLS_TERRITORYAMERICAおよびFRANCEに設定した場合に、デフォルトの日付書式、短い日付書式および長い日付書式にどのように影響するかを示します。

この例をSQL Developerで試す場合は、ワークシートに文や問合せを入力します。ワークシートの詳細は、「SQL Developerにおける問合せの実行」を参照してください。ここに示す結果はSQL*Plusによるもので、SQL Developerとは書式が若干異なります。

例7-3 NLS_TERRITORYによる日付記号への影響

  1. NLS_TERRITORYの現在の値を書き留めます。

  2. 手順1の値がAMERICAでない場合は変更します。

    ALTER SESSION SET NLS_TERRITORY=AMERICA;
    
  3. 次の問合せを実行します。

    SELECT hire_date "Default",
           TO_CHAR(hire_date,'DS') "Short",
           TO_CHAR(hire_date,'DL') "Long"
    FROM employees
    WHERE employee_id IN (111, 112, 113);
    

    結果:

    Default    Short      Long
    --------- ---------- -----------------------------
    30-SEP-05 9/30/2005  Friday, September 30, 2005
    07-MAR-98 3/7/2006   Tuesday, March 07, 2006
    07-DEC-99 12/7/2007  Friday, December 07, 2007
     
    3 rows selected.
    
  4. NLS_TERRITORYの値をFRANCEに変更します。

    ALTER SESSION SET NLS_TERRITORY=FRANCE;
    
  5. 手順3の問合せを繰り返します。

    結果:

    Default  Short      Long
    -------- ---------- ---------------------------
    30/09/05 30/09/2005 friday 30 september 2005
    07/03/06 07/03/2006 tuesday 7 march 2006
    07/12/07 07/12/2007 friday 7 december 2007
     
    3 rows selected.
    

    (フランス語の曜日名と月名を取得するには、問合せを実行する前に、NLS_LANGUAGEまたはNLS_DATE_LANGUAGEFRENCHに設定する必要があります。)

  6. NLS_TERRITORYを手順1の値に設定します。

例7-4では、NLS_DATE_FORMATの値を変更し、NLS_TERRITORYによって設定されたデフォルト値を上書きします。

この例をSQL Developerで試す場合は、ワークシートに文や問合せを入力します。ワークシートの詳細は、「SQL Developerにおける問合せの実行」を参照してください。ここに示す結果はSQL*Plusによるもので、SQL Developerとは書式が若干異なります。

例7-4 NLS_DATE_FORMATによるNLS_TERRITORYの上書き

  1. NLS_TERRITORYNLS_DATE_FORMATの現在の値を書き留めます。

  2. 手順1NLS_TERRITORYの値がAMERICAでない場合は、次のように変更します。

    ALTER SESSION SET NLS_TERRITORY=AMERICA;
    
  3. 手順1NLS_DATE_FORMATの値が'Day Month ddth'でない場合は、次のように変更します。

    ALTER SESSION SET NLS_DATE_FORMAT='Day Month ddth';
    
  4. 次の問合せを実行します(前述の例の手順3より)。

    SELECT hire_date "Default",
           TO_CHAR(hire_date,'DS') "Short",
           TO_CHAR(hire_date,'DL') "Long"
    FROM employees
    WHERE employee_id IN (111, 112, 113);
    

    結果:

    Default                  Short      Long
    ------------------------ ---------- -----------------------------
    Friday    September 30th 9/30/2005  Tuesday, September 30, 2005
    Tuesday   March     07th 3/7/2006   Saturday, March 07, 2006
    Friday    December  07th 12/7/2007  Tuesday, December 07, 2007
    
    3 rows selected.
    
  5. NLS_TERRITORYNLS_DATE_FORMATを手順1の値に設定します。


参照:

  • NLS_DATE_FORMATパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

  • TO_CHARファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

  • TO_DATEファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

  • 「日付および時刻書式について」

  • 「NLSパラメータ値の変更」


NLS_DATE_LANGUAGEパラメータについて

指定内容: 次の項目で出力される曜日および月の名前と略称の言語

許容可能な値: Oracleがサポートする言語名。リストは、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

デフォルト値: NLS_LANGUAGEによって設定されます。詳細は、「NLS_LANGUAGEパラメータについて」を参照してください。

例7-5では、NLS_DATE_LANGUAGEFRENCHおよびSWEDISHに設定した場合に、表示されるシステム日付にどのように影響するかを示します。

この例をSQL Developerで試す場合は、ワークシートに文や問合せを入力します。ワークシートの詳細は、「SQL Developerにおける問合せの実行」を参照してください。ここに示す結果はSQL*Plusによるもので、SQL Developerとは書式が若干異なります。

例7-5 NLS_DATE_LANGUAGEによる、表示されるSYSDATEへの影響

  1. NLS_DATE_LANGUAGEの現在の値を書き留めます。

  2. 手順1NLS_DATE_LANGUAGEの値がFRENCHでない場合は変更します。

    ALTER SESSION SET NLS_DATE_LANGUAGE=FRENCH;
    
  3. 次の問合せを実行します。

    SELECT TO_CHAR(SYSDATE, 'Day:Dd Month yyyy') "System Date"
    FROM DUAL;
    

    結果:

    System Date
    --------------------------
    Vendredi:28 December   2012
    
  4. NLS_DATE_LANGUAGEの値をSWEDISHに変更します。

    ALTER SESSION SET NLS_DATE_LANGUAGE=SWEDISH;
    
  5. 手順3の問合せを繰り返します。

    結果:

    System Date
    -------------------------
    Fredag :28 December   2012
    
  6. NLS_DATE_LANGUAGEを手順1の値に設定します。


参照:

  • NLS_DATE_LANGUAGEパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

  • TO_CHARファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

  • TO_DATEファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

  • 「日付および時刻書式について」

  • 「NLSパラメータ値の変更」


NLS_TIMESTAMP_FORMATおよびNLS_TIMESTAMP_TZ_FORMATパラメータについて

指定内容: 次の項目に対するデフォルトの日付書式

  • TIMESTAMPオーディオテープ

  • TIMESTAMP WITH LOCAL TIME ZONEオーディオテープ

許容可能な値: 有効な任意の日付時間書式モデル。次に例を示します。

NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH:MI:SS.FF'
NLS_TIMESTAMP_TZ_FORMAT='YYYY-MM-DD HH:MI:SS.FF TZH:TZM'

日付時間書式モデルの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

デフォルト値: NLS_TERRITORYによって設定されます。詳細は、「NLS_TERRITORYパラメータについて」を参照してください。


参照:

  • NLS_TIMESTAMP_FORMATパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

  • NLS_TIMESTAMP_TZ_FORMATパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

  • 日時データ型およびタイムゾーン・サポートの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

  • TIMESTAMPオーディオテープの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

  • TIMESTAMP WITH LOCAL TIME ZONEデータ型の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

  • 「日付および時刻書式について」

  • 「NLSパラメータ値の変更」


NLS_CALENDARパラメータについて

指定内容: データベースの暦法

許容可能な値: Oracleがサポートする暦法。リストは、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

デフォルト値: Gregorian

例7-6では、NLS_CALENDAR'English Hijrah'およびGregorianに設定した場合に、表示されるシステム日付にどのように影響するかを示します。

この例をSQL Developerで試す場合は、ワークシートに文や問合せを入力します。ワークシートの詳細は、「SQL Developerにおける問合せの実行」を参照してください。ここに示す結果はSQL*Plusによるもので、SQL Developerとは書式が若干異なります。

例7-6 NLS_CALENDARによる、表示されるSYSDATEへの影響

  1. NLS_CALENDARの現在の値を書き留めます。

  2. 手順1で、NLS_CALENDARの値が'English Hijrah'でない場合は変更します。

    ALTER SESSION SET NLS_CALENDAR='English Hijrah';
    
  3. 次の問合せを実行します。

    SELECT SYSDATE FROM DUAL;
    

    結果:

    SYSDATE
    -------------------------
    17 Safar             1434
    
  4. NLS_CALENDARの値を'Gregorian'に変更します。

    ALTER SESSION SET NLS_CALENDAR='Gregorian';
    
  5. 次の問合せを実行します。

    SELECT SYSDATE FROM DUAL;
    

    結果:

    SYSDATE
    ---------
    31-DEC-12
    
  6. NLS_CALENDARを手順1の値に設定します。


参照:


NLS_NUMERIC_CHARACTERSパラメータについて

指定内容: 小数点文字(数値の整数部と小数部を区切る文字)およびグループ・セパレータ(千や100万などを示すために整数グループを区切る文字)。この文字は数値書式要素Gで戻されます。

許容可能な値: 次の文字以外の、任意の異なる2つのシングルバイト文字。

  • 数字

  • プラス(+)

  • マイナス(-)

  • 小なり(<)

  • 大なり(>)

デフォルト値: NLS_TERRITORYによって設定されます。詳細は、「NLS_TERRITORYパラメータについて」を参照してください。

SQL文では数値を次のいずれかの方法で表現できます。

  • 数値リテラル

    数値リテラルは引用符で囲まず、小数点文字として常にピリオド(.)を使用し、グループ・セパレータは含めません。

  • テキスト・リテラル

    テキスト・リテラルは一重引用符で囲みます。テキスト・リテラルは、必要に応じて、現行のNLS設定に従って暗黙的または明示的に数値に変換されます。

例7-7では、2つの異なるNLS_NUMERIC_CHARACTERSの設定により、同じ問合せの表示結果にどのような影響があるかを示します。

この例をSQL Developerで試す場合は、ワークシートに文や問合せを入力します。ワークシートの詳細は、「SQL Developerにおける問合せの実行」を参照してください。ここに示す結果はSQL*Plusによるもので、SQL Developerとは書式が若干異なります。

例7-7 NLS_NUMERIC_CHARACTERSによる小数点文字とグループ・セパレータへの影響

  1. NLS_NUMERIC_CHARACTERSの現在の値を書き留めます。

  2. 手順1で、NLS_NUMERIC_CHARACTERSの値が",."(小数点文字はカンマ、グループ・セパレータはピリオド)でない場合は変更します。

    ALTER SESSION SET NLS_NUMERIC_CHARACTERS=",.";
    
  3. 次の問合せを実行します。

    SELECT TO_CHAR(4000, '9G999D99') "Number" FROM DUAL;
    

    結果:

    Number
    ---------
     4.000,00
    
  4. NLS_NUMERIC_CHARACTERSの値を",."(小数点文字はピリオド、グループ・セパレータはカンマ)に変更します。

    ALTER SESSION SET NLS_NUMERIC_CHARACTERS=".,";
    
  5. 次の問合せを実行します。

    SELECT TO_CHAR(4000, '9G999D99') "Number" FROM DUAL;
    

    結果:

    Number
    ---------
     4,000.00
    
  6. NLS_NUMERIC_CHARACTERSを手順1の値に設定します。


参照:


NLS_CURRENCYパラメータについて

指定内容: 各国通貨記号(数値書式要素Lで戻される文字列)。

許容可能な値: 任意の有効な通貨記号文字列。

デフォルト値: NLS_TERRITORYによって設定されます。詳細は、「NLS_TERRITORYパラメータについて」を参照してください。

例7-8では、NLS_CURRENCYの値を変更し、NLS_TERRITORYによって設定されたデフォルト値を上書きします。

この例をSQL Developerで試す場合は、ワークシートに文や問合せを入力します。ワークシートの詳細は、「SQL Developerにおける問合せの実行」を参照してください。ここに示す結果はSQL*Plusによるもので、SQL Developerとは書式が若干異なります。

例7-8 NLS_CURRENCYによるNLS_TERRITORYの上書き

  1. NLS_TERRITORYNLS_CURRENCYの現在の値を書き留めます。

  2. 手順1NLS_TERRITORYの値がAMERICAでない場合は、次のように変更します。

    ALTER SESSION SET NLS_TERRITORY=AMERICA;
    
  3. 次の問合せを実行します。

    SELECT TO_CHAR(salary, 'L099G999D99') "Salary"
    FROM EMPLOYEES
    WHERE salary > 13000;
    

    結果:

    Salary
    ---------------------
              $024,000.00
              $017,000.00
              $017,000.00
              $014,000.00
              $013,500.00
    
  4. NLS_CURRENCYの値を'¥'に変更します。

    ALTER SESSION SET NLS_CURRENCY='¥';
    
  5. 次の問合せを実行します。

    SELECT TO_CHAR(salary, 'L099G999D99') "Salary"
    FROM EMPLOYEES
    WHERE salary > 13000;
    

    結果:

    Salary
    ---------------------
              ¥024,000.00
              ¥017,000.00
              ¥017,000.00
              ¥014,000.00
              ¥013,500.00
    
  6. NLS_TERRITORYNLS_CURRENCYを手順1の値に設定します。


参照:


NLS_ISO_CURRENCYパラメータについて

指定内容: ISO通貨記号(数値書式要素Cで戻される文字列)。

許容可能な値: 任意の有効な通貨記号文字列。

デフォルト値: NLS_TERRITORYによって設定されます。詳細は、「NLS_TERRITORYパラメータについて」を参照してください。

各国通貨記号は不明確なことがありますが、ISO通貨記号は一意です。

例7-9では、地域AUSTRALIAおよびAMERICAは各国通貨記号が同じですが、ISO通貨記号は異なることを示します。

この例をSQL Developerで試す場合は、ワークシートに文や問合せを入力します。ワークシートの詳細は、「SQL Developerにおける問合せの実行」を参照してください。ここに示す結果はSQL*Plusによるもので、SQL Developerとは書式が若干異なります。

例7-9 NLS_ISO_CURRENCY

  1. NLS_TERRITORYNLS_ISO_CURRENCYの現在の値を書き留めます。

  2. 手順1NLS_TERRITORYの値がAUSTRALIAでない場合は変更します。

    ALTER SESSION SET NLS_TERRITORY=AUSTRALIA;
    
  3. 次の問合せを実行します。

    SELECT TO_CHAR(salary, 'L099G999D99') "Local",
            TO_CHAR(salary, 'C099G999D99') "ISO"
    FROM EMPLOYEES
    WHERE salary > 15000;
    

    結果:

    Local                 ISO
    --------------------- ------------------
              $024,000.00      AUD024,000.00
              $017,000.00      AUD017,000.00
              $017,000.00      AUD017,000.00
    
  4. NLS_TERRITORYの値をAMERICAに変更します。

    ALTER SESSION SET NLS_TERRITORY=AMERICA;
    
  5. 次の問合せを実行します。

    SELECT TO_CHAR(salary, 'L099G999D99') "Local",
            TO_CHAR(salary, 'C099G999D99') "ISO"
    FROM EMPLOYEES
    WHERE salary > 15000;
    

    結果:

    Local                 ISO
    --------------------- ------------------
              $024,000.00      USD024,000.00
              $017,000.00      USD017,000.00
              $017,000.00      USD017,000.00
    
  6. NLS_TERRITORYNLS_ISO_CURRENCYを手順1の値に設定します。


参照:


NLS_DUAL_CURRENCYパラメータについて

指定内容: 二重通貨記号(ユーロ移行期間中にユーロ通貨記号をサポートするために導入されました)。

許容可能な値: 任意の有効な通貨記号文字列。

デフォルト値: NLS_TERRITORYによって設定されます。詳細は、「NLS_TERRITORYパラメータについて」を参照してください。


参照:


NLS_SORTパラメータについて

指定内容: ORDER BY句がある問合せの言語ソート順序(照合順序)。

許容可能な値:

  • BINARY

    ソート順序は、データ型に応じて、データベース・キャラクタ・セットまたは各国キャラクタ・セットのバイナリ・ソート順序に基づいています。

  • Oracleがサポートする任意の言語ソート名

    ソート順序は、指定した言語ソート名の順序に基づいています。通常、言語ソート名は言語名と同じですが、異なる場合もあります。サポートされている言語ソート名のリストは、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

デフォルト値: NLS_LANGUAGEによって設定されます。詳細は、「NLS_LANGUAGEパラメータについて」を参照してください。

例7-10では、2つの異なるNLS_SORTの設定により、同じ問合せの表示結果にどのような影響があるかを示します。設定は、BINARYと従来のスペイン語(SPANISH_M)です。従来のスペイン語では、ch、llおよびñをそれぞれc、lおよびnに続く文字として扱います。

この例をSQL Developerで試す場合は、ワークシートに文や問合せを入力します。ワークシートの詳細は、「SQL Developerにおける問合せの実行」を参照してください。ここに示す結果はSQL*Plusによるもので、SQL Developerとは書式が若干異なります。

例7-10 NLS_SORTによる言語ソート順序への影響

  1. スペイン語の単語の表を作成します。

    CREATE TABLE temp (name VARCHAR2(15));
    
  2. 表にスペイン語の単語を移入します。

    INSERT INTO temp (name) VALUES ('laguna');
    INSERT INTO temp (name) VALUES ('llama');
    INSERT INTO temp (name) VALUES ('loco');
    
  3. NLS_SORTの現在の値を書き留めます。

  4. 手順3NLS_SORTの値がBINARYでない場合は、次のように変更します。

    ALTER SESSION SET NLS_SORT=BINARY;
    
  5. 次の問合せを実行します。

    SELECT * FROM temp ORDER BY name;
    

    結果:

    NAME
    ---------------
    laguna
    llama
    loco
    
  6. NLS_SORTの値をSPANISH_M(従来のスペイン語)に変更します。

    ALTER SESSION SET NLS_SORT=SPANISH_M;
    
  7. 手順5の問合せを繰り返します。

    結果:

    NAME
    ---------------
    laguna
    loco
    llama
    
  8. 表を削除します。

    DROP TABLE temp;
    
  9. NLS_SORTを手順3の値に設定します。

大/小文字およびアクセントを区別しないソート

Oracle Databaseの操作では、大/小文字および文字のアクセントが区別されます。大/小文字を区別しないソートを実行するには、NLS_SORTパラメータの値に_CIを付け加えます(BINARY_CIXGERMAN_CIなど)。大/小文字および文字のアクセントのどちらも区別しないソートを実行するには、NLS_SORTパラメータの値に_AIを付け加えます(BINARY_AIFRENCH_M_AIなど)。


参照:


NLS_COMPパラメータについて

指定内容: SQL操作の文字比較動作。

許容可能な値:

  • BINARY

    SQLで、文字のバイナリ・コードを比較します。バイナリ・コードが高い方の文字が、もう一方の文字よりも大きくなります。

  • LINGUISTIC

    SQLで、NLS_SORTパラメータの値に基づいた言語比較を実行します。詳細は、「NLS_SORTパラメータについて」を参照してください。

  • ANSI

    この値は、下位互換性のみを目的として用意されています。

デフォルト値: BINARY

例7-11では、NLS_COMP設定に応じた問合せの結果を示します。

この例をSQL Developerで試す場合は、ワークシートに文や問合せを入力します。ワークシートの詳細は、「SQL Developerにおける問合せの実行」を参照してください。ここに示す結果はSQL*Plusによるもので、SQL Developerとは書式が若干異なります。

例7-11 NLS_COMPによるSQL文字比較への影響

  1. NLS_SORTNLS_COMPの現在の値を書き留めます。

  2. 手順1で、NLS_SORTNLS_COMPの値がそれぞれSPANISH_M(従来のスペイン語)とBINARYでない場合は変更します。

    ALTER SESSION SET NLS_SORT=SPANISH_M NLS_COMP=BINARY;
    
  3. 次の問合せを実行します。

    SELECT LAST_NAME FROM EMPLOYEES
    WHERE LAST_NAME LIKE 'C%';
    

    結果:

    LAST_NAME                 
    ------------------------- 
    Cabrio                    
    Cambrault                 
    Cambrault                 
    Chen                      
    Chung                     
    Colmenares                
     
    6 rows selected
    
  4. NLS_COMPの値をLINGUISTICに変更します。

    ALTER SESSION SET NLS_COMP=LINGUISTIC;
    
  5. 手順3の問合せを繰り返します。

    結果:

    LAST_NAME                 
    ------------------------- 
    Cabrio                    
    Cambrault                 
    Cambrault                 
    Colmenares                
     
    4 rows selected
    

    従来のスペイン語ではchcに続く1文字として扱うため、ここではChenとChungは返されません。

  6. NLS_SORTNLS_COMPを手順1の値に設定します。


参照:


NLS_LENGTH_SEMANTICSパラメータについて

指定広告: 文字データ型CHARVARCHAR2LONGの列の長さセマンティクス。これらの列がバイトまたは文字のいずれかで指定されるかを指定します(パラメータ設定後に宣言された列にのみ適用可能)。

許容可能な値:

  • BYTE

    新しいCHARVARCHAR2およびLONGの列をバイト単位で指定します。

  • CHAR

    新しいCHARVARCHAR2およびLONGの列を文字単位で指定します。

デフォルト値: BYTE

この例をSQL Developerで試す場合は、ワークシートに文や問合せを入力します。ワークシートの詳細は、「SQL Developerにおける問合せの実行」を参照してください。ここに示す結果はSQL*Plusによるもので、SQL Developerとは書式が若干異なります。

例7-12 NLS_LENGTH_SEMANTICSがVARCHAR2列の格納に与える影響

  1. NLS_LENGTH_SEMANTICSの現在の値を書き留めます。

  2. 手順1で、NLS_LENGTH_SEMANTICSの値がBYTEでない場合は変更します。

    ALTER SESSION SET NLS_LENGTH_SEMANTICS=BYTE;
    
  3. VARCHAR2列のある表を作成します。

    CREATE TABLE SEMANTICS_BYTE(SOME_DATA VARCHAR2(20));
    
  4. 「接続」タブをクリックします。

  5. 「接続」フレームで、hr_connを展開します。

  6. スキーマ・オブジェクト・タイプのリストで、「表」を展開します。

  7. 表のリストで、SEMANTICS_BYTEを選択します。

    「接続」フレームの右側にある「列」ペインに、「列名」SOME_DATAの「データ型」がVARCHAR2(20 BYTE)であると表示されます。

  8. NLS_LENGTH_SEMANTICSの値をCHARに変更します。

    ALTER SESSION SET NLS_LENGTH_SEMANTICS=CHAR;
    
  9. VARCHAR2列のある別の表を作成します。

    CREATE TABLE SEMANTICS_CHAR(SOME_DATA VARCHAR2(20));
    
  10. 「接続」フレームで、「リフレッシュ」アイコンをクリックします。

    今回はSEMANTICS_CHARを含む表のリストが表示されます。

  11. SEMANTICS_CHARを選択します。

    「列」ペインに、「列名」SOME_DATAの「データ型」がVARCHAR2(20 CHAR)であると表示されます。

  12. SEMANTICS_BYTEを再び選択します。

    「列」ペインに、「列名」SOME_DATAの「データ型」がVARCHAR2(20 BYTE)であると表示されます。

  13. NLS_LENGTH_SEMANTICSを手順1の値に設定します。


参照:


グローバルなアプリケーションでのUnicodeの使用方法

Unicodeデータは挿入および取得できます。データはデータベースおよびクライアント間で透過的に変換され、クライアント・プログラムがデータベース・キャラクタ・セットおよび各国キャラクタ・セットから独立していることを保証します。

この項の内容は次のとおりです。


参照:

  • Unicodeを使用したSQLおよびPL/SQLのプログラミングの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

  • Unicodeを使用したプログラミングの一般的な情報は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。


SQLおよびPL/SQLにおけるUnicode文字列リテラルの表現

SQLとPL/SQLでUnicode文字列リテラルを表現する方法は3つあります。

  • N'string'

    例: N'résumé'

    制限: 「キャラクタ・セット変換中のデータ消失の回避」を参照してください。

  • NCHR(number)

    SQLファンクションNCHRは、各国語キャラクタ・セットでバイナリがnumberに相当する文字を返します。返される文字のデータ型はNVARCHAR2です。

    例: NCHR(36)は、デフォルトの各国語キャラクタ・セットであるAL16UTF16では、$を表します。

    制限: NCHR(number)の値の移植性は、同じ各国語キャラクタ・セットを使用するアプリケーションに限定されます。

  • UNISTR('string')

    SQLファンクションUNISTRでは、stringを各国語キャラクタ・セットに変換します。

    移植性とデータ保護のために、stringに含めるのはASCII文字とUnicodeエンコーディング値のみとすることをお薦めします。Unicodeエンコーディング値は\xxxxという形式をとり、xxxxはUCS-2エンコーディング形式で文字コード値を表す16進値です。

    例: UNISTR('G\0061ry')'Gary'を表します。

    ASCII文字は、データベース・キャラクタ・セットに変換されてから、各国語キャラクタ・セットに変換されます。Unicodeエンコーディング値は、各国語キャラクタ・セットに直接変換されます。


参照:

  • Unicode文字列リテラルの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

  • NCHRファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

  • UNISTRファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。


キャラクタ・セット変換中のデータ消失の回避

SQLまたはPL/SQL文の一部として、リテラル(接頭辞Nあり、またはなし)が、文の残りとして、同じキャラクタ・セットでエンコードされます。クライアント側では、文はNLS_LANGパラメータで決定されるクライアントのキャラクタ・セットでエンコードされます。サーバー側では、文はデータベースのキャラクタ・セットでエンコードされます。

SQLまたはPL/SQL文がクライアントからデータベースに送信されると、それに応じてキャラクタ・セットが変換されます。クライアントがテキスト・リテラルで使用しているすべての文字がデータベース・キャラクタ・セットに含まれていない場合、データはこの変換で消失します。 NCHAR文字列リテラルはデータベース・キャラクタ・セットに依存しないよう設計されているため、CHARテキスト・リテラルよりも影響を受けやすくなります。

互換性のないデータベース・キャラクタ・セットへの変換時のデータ消失を回避するために、NCHARリテラル置換機能を有効にすることができます。詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。