各NLSパラメータについて
多くのNLSパラメータを使用できます。
関連情報:
-
グローバリゼーション・ サポート環境の設定の詳細は『Oracle Databaseグローバリゼーション・ サポート・ガイド』を参照してください。
ロケールとNLS_LANGパラメータについて
ロケールとは、システムやアプリケーションが実行される言語的および文化的環境のことです。Oracle Databaseソフトウェアでロケールを指定する最も簡単な方法は、NLS_LANGパラメータを設定することです。
NLS_LANGパラメータは、サーバー・セッション(たとえばSQL文の処理)およびクライアント・アプリケーション(たとえばOracle Databaseツールでの書式表示)の両方で、パラメータNLS_LANGUAGEおよびNLS_TERRITORYのデフォルト値を設定します。また、NLS_LANGパラメータは、クライアント・アプリケーションで入力または表示される文字セットを設定します。
NLS_LANGのデフォルト値は、データベースのインストール時に設定されます。ALTER SESSION文を使用して、NLSパラメータ値を変更できます。ユーザーのセッションに対して NLS_LANG で設定した値も変更できますが、クライアント環境のNLS設定を変更できるのはクライアント側のみです。
関連情報:
-
NLS_LANGパラメータによるロケール指定の詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください。 -
Oracle Databaseでサポートされている言語、地域、文字セット、およびその他のロケールに関する詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照
NLS_LANGUAGEパラメータについて
このパラメータはデータベースのデフォルト言語を指定します。
指定項目: データベースのデフォルト言語。次に関するデフォルトの規則を設定します。
-
サーバー・メッセージの言語
-
SQLファンクションTO_CHARとTO_DATEに指定される曜日と月の名前と略称の言語
-
AM、PM、ADおよびBCを表すデフォルト言語の記号
-
ORDER BY句が指定された場合に文字データをソートするためのデフォルトの順序
-
文字表記の方向
-
肯定および否定の応答文字列(たとえば、YESとNO)
許容値: Oracleがサポートする言語名。リストについては、Oracle Databaseグローバリゼーション・サポート・ガイドに関する項を参照してください。
デフォルト値: 「ロケールとNLS_LANGパラメータについて」で説明されているように、NLS_LANGで設定します。
次のデフォルト値を設定します。
-
NLS_DATE_LANGUAGE(「NLS_DATE_LANGUAGEパラメータについて」を参照)。
-
NLS_SORT (「NLS_SORTパラメータについて」を参照)。
例7-1では、NLS_LANGUAGEをITALIANおよびGERMANに設定した場合、サーバー・メッセージや月の略称にどのように影響するかを示します。
SQL Developerでこの例を試すには、ワークシートに文と問合せを入力します。ワークシートの詳細は、「SQL Developerでの問合せの実行」を参照してください。ここで示される結果はSQL*Plusのもので、その書式はSQL Developerでは少し異なります。
例7-1 NLS_LANGUAGEによるサーバー・メッセージおよび月の略称への影響
-
NLS_LANGUAGEの現在の値に注意してください。
-
ステップ1の値が
ITALIANでない場合は、次のように変更してください。ALTER SESSION SET NLS_LANGUAGE=ITALIAN; -
存在しない表の問合せ:
SELECT * FROM nonexistent_table;結果:
SELECT * FROM nonexistent_table * ERROR at line 1: ORA-00942: tabella o vista inesistente -
次の問合せを実行します。
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. -
NLS_LANGUAGEの値を
GERMANに変更します。ALTER SESSION SET NLS_LANGUAGE=GERMAN; -
ステップ3から問合せを繰り返して行います。
結果:
SELECT * FROM nonexistent_table * ERROR at line 1: ORA-00942: Tabelle oder View nicht vorhanden -
ステップ4から問合せを繰り返して行います。
結果:
LAST_NAME HIRE_DATE ------------------------- --------- Sciarra 30-SEP-97 Urman 07-MRZ-98 Popp 07-DEZ-99 3 rows selected. - NLS_LANGUAGEをステップ1に設定した値に設定します。
関連情報:
-
0パラメータの詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください。
NLS_TERRITORYパラメータについて
このパラメータは、日付形式、タイム・スタンプ書式、小数点記号およびグループ・セパレータ、各国通貨シンボル、ISO通貨記号、二重通貨記号のデフォルトの規則を指定します。
指定項目:次のデフォルト規則。
-
日付フォーマット
-
タイムスタンプ書式
-
小数点文字および桁グループ・セパレータ
-
各国通貨記号
-
ISO通貨記号
-
2重通貨記号
許容値: Oracleがサポートする地域名。リストについては、Oracle Databaseグローバリゼーション・サポート・ガイドに関する項を参照してください。
デフォルト値: 「ロケールとNLS_LANGパラメータについて」で説明されているように、NLS_LANGで設定します。
次のデフォルト値を設定します。
-
NLS_DATE_FORMAT(「NLS_DATE_FORMATパラメータについて」を参照)。
-
NLS_TIMESTAMP_FORMATおよびNLS_TIMESTAMP_TZ_FORMAT(「NLS_TIMESTAMP_FORMATとNLS_TIMESTAMP_TZ_FORMATパラメータについて」を参照)。
-
NLS_NUMERIC_CHARACTERS("「NLS_NUMERIC_CHARACTERSパラメータについて」を参照) -
NLS_CURRENCY (「NLS_CURRENCYパラメータについて」を参照)。
-
NLS_ISO_CURRENCY (「NLS_ISO_CURRENCYパラメータについて」を参照)。
-
NLS_DUAL_CURRENCY(「NLS_DUAL_CURRENCYパラメータについて」を参照)。
例7-2では、NLS_TERRITORYをJAPANおよびAMERICAに設定した場合、通貨記号にどのように影響するかを示します。
SQL Developerでこの例を試すには、ワークシートに文と問合せを入力します。ワークシートの詳細は、「SQL Developerでの問合せの実行」を参照してください。ここで示される結果はSQL*Plusのもので、その書式はSQL Developerでは少し異なります。
例7-2 NLS_TERRITORYによる通貨記号への影響
-
NLS_TERRITORYの現在の値に注意してください。
-
ステップ1の値が
JAPANでない場合は、次のように変更してください。ALTER SESSION SET NLS_TERRITORY=JAPAN; -
次の問合せを実行します。
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. -
NLS_TERRITORYの値をAMERICAに変更します。ALTER SESSION SET NLS_TERRITORY=AMERICA; -
ステップ3から問合せを繰り返して行います。
結果:
SALARY -------------------- $24,000.00 $17,000.00 $17,000.00 3 rows selected. NLS_TERRITORYをステップ1の値に設定します。
関連情報:
-
0パラメータの詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください。
NLS_DATE_FORMATパラメータについて
このパラメータは、TO_CHARおよびTO_DATEファンクションで使用するデフォルトの日付書式を指定します。
指定: TO_CHARファンクションとTO_DATEファンクションで使用するデフォルトの日付書式(「問合せでの変換ファンクションの使用」を参照)
許容値:有効な任意の日付時間書式モデル。たとえば:
NLS_DATE_FORMAT='MM/DD/YYYY'
日付時間書式モデルの詳細は、Oracle Database SQL言語リファレンスに関する項を参照してください。
デフォルト値: NLS_TERRITORYで設定します。詳細は、「NLS_TERRITORYパラメータについて」を参照してください。
デフォルトの日付書式が、所定の地域の規則に対応していない場合があります。ローカライズされたフォーマットで日付を取得するには、DS(短い日付)フォーマットとDL(長い日付)フォーマットを使用できます。例7-3では、NLS_TERRITORYをAMERICAおよびFRANCEに設定した場合、デフォルトの日付フォーマット、短い日付フォーマットおよび長い日付書式にどのように影響するかを示します。例7-4では、NLS_DATE_FORMATの値を変更し、NLS_TERRITORYによって設定されたデフォルト値をオーバーライドします。
例をSQL Developerで試す場合は、ワークシートに文や問合せを入力します。ワークシートの詳細は、「SQL Developerでの問合せの実行」を参照してください。ここで示される結果はSQL*Plusのもので、その書式はSQL Developerでは少し異なります。
例7-3 NLS_TERRITORYによる日付記号への影響
-
NLS_TERRITORYの現在の値に注意してください。
-
ステップ1の値が
AMERICAでない場合は、次のように変更してください。ALTER SESSION SET NLS_TERRITORY=AMERICA; -
次の問合せを実行します。
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. -
NLS_TERRITORYの値を
FRANCEに変更します。ALTER SESSION SET NLS_TERRITORY=FRANCE; -
ステップ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_LANGUAGEを
FRENCHに設定する必要があります。) - NLS_TERRITORYをステップ1の値に設定します。
例7-4 NLS_DATE_FORMATによるNLS_TERRITORYの上書き
-
NLS_TERRITORYおよびNLS_DATE_FORMATの現在の値を確認します。
-
ステップ1のNLS_TERRITORYの値が
AMERICAでない場合は、次のように変更します。ALTER SESSION SET NLS_TERRITORY=AMERICA; -
ステップ1でNLS_DATE_FORMATの値が
'Day Month ddth'でない場合、次のように変更します。ALTER SESSION SET NLS_DATE_FORMAT='Day Month ddth'; -
前のステップ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. - NLS_TERRITORYおよびNLS_DATE_FORMATを、ステップ1の値に設定します。
関連情報:
-
0パラメータの詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください。
-
TO_CHARファンクションの詳細は、Oracle Database SQL言語リファレンスを参照してください。
-
TO_DATEファンクションの詳細は、Oracle Database SQL言語リファレンスを参照してください。
NLS_DATE_LANGUAGEパラメータについて
このパラメータは、SQLファンクションTO_CHARおよびTO_DATEで生成される曜日および月の名前と略称の言語、デフォルトの日付書式(NLS_DATE_FORMATで設定)、およびAM、PM、AD、BCに相当する、デフォルト言語の記号を指定します。
指定項目:次の方法で作成した曜日と月の名称と略号。
-
SQLファンクションTO_CHARとTO_DATE (「問合せでの変換ファンクションの使用」を参照)
-
デフォルトの日付書式(NLS_DATE_FORMATによって設定されます(「NLS_DATE_FORMATパラメータについて」を参照)。
-
AM、PM、ADおよびBCを表すデフォルト言語の記号
許容値: Oracleがサポートする言語名。リストについては、Oracle Databaseグローバリゼーション・サポート・ガイドに関する項を参照してください。
デフォルト値: 「NLS_LANGUAGEパラメータについて」で説明されているように、NLS_LANGUAGEで設定します。
例7-5では、NLS_DATE_LANGUAGEをFRENCHおよびSWEDISHに設定した場合、表示されるシステム日付にどのように影響するかを示します。
SQL Developerでこの例を試すには、ワークシートに文と問合せを入力します。ワークシートの詳細は、「SQL Developerでの問合せの実行」を参照してください。ここで示される結果はSQL*Plusのもので、その書式はSQL Developerでは少し異なります。
例7-5 NLS_DATE_LANGUAGEによる、表示されるSYSDATEへの影響
-
NLS_DATE_LANGUAGEの現在の値に注意してください。
-
ステップ1のNLS_DATE_LANGUAGEの値が
FRENCHでない場合、次のように変更してください。ALTER SESSION SET NLS_DATE_LANGUAGE=FRENCH; -
問合せを実行します。
SELECT TO_CHAR(SYSDATE, 'Day:Dd Month yyyy') "System Date" FROM DUAL;結果:
System Date -------------------------- Vendredi:28 December 2012 -
NLS_DATE_LANGUAGEの値を
SWEDISHに変更します。ALTER SESSION SET NLS_DATE_LANGUAGE=SWEDISH; -
ステップ3から問合せを繰り返して行います。
結果:
System Date ------------------------- Fredag :28 December 2012 NLS_DATE_LANGUAGEをステップ1での値に設定します。
関連情報:
-
NLS_DATE_LANGUAGEパラメータの詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください。
-
TO_CHARファンクションの詳細は、Oracle Database SQL言語リファレンスを参照してください。
-
y関数の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
NLS_TIMESTAMP_FORMATとNLS_TIMESTAMP_TZ_FORMATパラメータについて
このパラメータは、TIMESTAMPオーディオテープおよびTIMESTAMP WITH LOCAL TIME ZONEオーディオテープのデフォルトの日付書式を指定します。
指定項目: 次のデフォルト日付書式:
-
TIMESTAMPオーディオテープ
-
TIMESTAMP WITH LOCAL TIME ZONEaudiotape
許容値:有効な任意の日付時間書式モデル。たとえば:
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パラメータについて」を参照してください。
関連情報:
-
0パラメータの詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください。
-
0パラメータの詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください。
-
日時データ型およびタイムゾーン・サポートの詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照
-
TIMESTAMPオーディオテープの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
-
TIMESTAMP WITH LOCAL TIME ZONEデータ型の詳細は、Oracle Database SQL言語リファレンスを参照してください。
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への影響
-
NLS_CALENDARの現在の値に注意してください。
-
ステップ1のNLS_CALENDARの値が
'English Hijrah'でない場合は、次のように変更します。ALTER SESSION SET NLS_CALENDAR='English Hijrah'; -
次の問合せを実行します。
SELECT SYSDATE FROM DUAL;結果:
SYSDATE ------------------------- 17 Safar 1434 -
NLS_CALENDARの値を
'Gregorian'に変更します。ALTER SESSION SET NLS_CALENDAR='Gregorian'; -
次の問合せを実行します。
SELECT SYSDATE FROM DUAL;結果:
SYSDATE --------- 31-DEC-12 - NLS_CALENDARをステップ1の値に設定します。
関連情報:
-
NLS_CALENDARパラメータの詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください。
NLS_NUMERIC_CHARACTERSパラメータについて
このパラメータは、小数点記号(数値の整数部と小数部の区切り)とグループ・セパレータ(千や100万などの桁区切り)を指定します。グループ・セパレータは、数値書式要素Gで戻される文字です
指定項目の指定:小数点記号(数値は整数部と小数部の分離)とグループ・セパレータ(千や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による小数点文字とグループ・セパレータへの影響
-
NLS_NUMERIC_CHARACTERSの現在の値に注意してください。
-
ステップ1で、NLS_NUMERIC_CHARACTERSの値が
",."(小数点文字はカンマ、グループ・セパレータはピリオドの)でない場合は変更します。ALTER SESSION SET NLS_NUMERIC_CHARACTERS=",."; -
次の問合せを実行します。
SELECT TO_CHAR(4000, '9G999D99') "Number" FROM DUAL;結果:
Number --------- 4.000,00 -
NLS_NUMERIC_CHARACTERSの値を
",."に変更します(10進文字はピリオド、グループ・セパレータはカンマ)。ALTER SESSION SET NLS_NUMERIC_CHARACTERS=".,"; -
次の問合せを実行します。
SELECT TO_CHAR(4000, '9G999D99') "Number" FROM DUAL;結果:
Number --------- 4,000.00 - NLS_NUMERIC_CHARACTERSをステップ1の値に設定します。
関連情報:
-
NLS_NUMERIC_CHARACTERSパラメータの詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください。
NLS_CURRENCYパラメータについて
このパラメータは、各国の通貨記号(数値書式要素Lが返す文字列)を指定します。
指定項目:各国の通貨記号(数値書式要素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の上書き
-
NLS_TERRITORYおよびNLS_CURRENCYの現在の値を確認します。
-
ステップ1のNLS_TERRITORYの値が
AMERICAでない場合は、次のように変更します。ALTER SESSION SET NLS_TERRITORY=AMERICA; -
問合せを実行します。
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 -
'©'の値をNLS_CURRENCYに変更します。ALTER SESSION SET NLS_CURRENCY='©'; -
問合せを実行します。
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 - NLS_TERRITORYおよびNLS_CURRENCYをステップ1の値に設定します。
関連情報:
-
0パラメータの詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください。
NLS_ISO_CURRENCYパラメータについて
このパラメータは、ISO通貨記号(数値書式要素Cが返す文字列)を指定します。
指定項目: 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
-
NLS_TERRITORYおよびNLS_ISO_CURRENCYの現在の値を確認します。
-
ステップ1のNLS_TERRITORYの値が
AUSTRALIAでない場合、次のように変更してください。ALTER SESSION SET NLS_TERRITORY=AUSTRALIA; -
次の問合せを実行します。
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 -
NLS_TERRITORYの値を
AMERICAに変更します。ALTER SESSION SET NLS_TERRITORY=AMERICA; -
次の問合せを実行します。
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 - NLS_TERRITORYおよびNLS_ISO_CURRENCYをステップ1の値に設定します。
関連情報:
-
NLS_ISO_CURRENCYパラメータの詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください。
NLS_DUAL_CURRENCYパラメータについて
このパラメータは、二重通貨記号(ユーロ移行期間中にユーロ通貨記号をサポートするために導入)を指定します。
指定内容: 2重通貨記号(ユーロ移行期間中にユーロ通貨記号をサポートするために導入)
許容値:有効な任意の通貨記号文字列。
デフォルト値: NLS_TERRITORYで設定します。詳細は、「NLS_TERRITORYパラメータについて」を参照してください。
関連情報:
-
NLS_DUAL_CURRENCYパラメータの詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください。
NLS_SORTパラメータについて
このパラメータは、ORDER BY句を持つ問合せの言語ソート順序(照合順序)を指定します。
指定: 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では少し異なります。
大/小文字およびアクセントを区別しないソート
Oracle Databaseの操作では、大/小文字および文字のアクセントが区別されます。大/小文字を区別しないソートを実行するには、NLS_SORTパラメータの値に_CIを付加します(たとえば、BINARY_CIまたはGERMAN_CI)。大/小文字を区別しない、かつアクセントを区別しないソートを実行する場合、NLS_SORTパラメータの値に_AIを付加します(たとえば、BINARY_AIまたはFRENCH_M_AI)。
例7-10 NLS_SORTによる言語ソート順序への影響
-
スペイン語の表を作成します。
CREATE TABLE temp (name VARCHAR2(15)); -
スペイン語の一部の単語を表に指定します。
INSERT INTO temp (name) VALUES ('laguna'); INSERT INTO temp (name) VALUES ('llama'); INSERT INTO temp (name) VALUES ('loco'); -
NLS_SORTの現在の値に注意してください。
-
ステップ3でNLS_SORTの値が
BINARYでない場合、次のように変更します。ALTER SESSION SET NLS_SORT=BINARY; -
次の問合せを実行します。
SELECT * FROM temp ORDER BY name;結果:
NAME --------------- laguna llama loco -
NLS_SORTの値を
SPANISH_M(旧来のスペイン語)に変更します。ALTER SESSION SET NLS_SORT=SPANISH_M; -
ステップ5から問合せを繰り返して行います。
結果:
NAME --------------- laguna loco llama -
表を削除します。
DROP TABLE temp; - NLS_SORTをステップ3の値に設定します。
関連情報:
-
NLS_SORTパラメータの詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください。 -
大/小文字およびアクセントを区別するソートの詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください。
NLS_COMPパラメータについて
このパラメータは、SQL操作の文字比較動作を指定します。
指定項目: SQL操作の文字比較動作。
許容値:
-
BINARYSQLは文字のバイナリ・コードを比較します。バイナリ・コードが大きい文字のほうが大きい値として扱われます。
-
LINGUISTICSQLにより、"「NLS_SORTパラメータについて」の
NLS_SORTパラメータ値に基づいて言語比較が実行されます。 -
ANSIこの値は、下位互換性を保つためだけに用意されています。
デフォルト値: BINARY
例7-11では、問合せの結果がNLS_COMP設定に依存することを示します。
SQL Developerでこの例を試すには、ワークシートに文と問合せを入力します。ワークシートの詳細は、「SQL Developerでの問合せの実行」を参照してください。ここで示される結果はSQL*Plusのもので、その書式はSQL Developerでは少し異なります。
例7-11 NLS_COMPによるSQL文字比較への影響
-
NLS_SORTおよびNLS_COMPの現在の値を確認します。
-
ステップ1のNLS_SORTとNLS_COMPの値がそれぞれ
SPANISH_M(旧来のスペイン語)とBINARYではない場合は、次のように変更してください。ALTER SESSION SET NLS_SORT=SPANISH_M NLS_COMP=BINARY; -
次の問合せを実行します。
SELECT LAST_NAME FROM EMPLOYEES WHERE LAST_NAME LIKE 'C%';結果:
LAST_NAME ------------------------- Cabrio Cambrault Cambrault Chen Chung Colmenares 6 rows selected -
LINGUISTICの値をNLS_COMPに変更します。ALTER SESSION SET NLS_COMP=LINGUISTIC; -
ステップ3から問合せを繰り返して行います。
結果:
LAST_NAME ------------------------- Cabrio Cambrault Cambrault Colmenares 4 rows selectedこのとき、旧来のスペイン語では
chをcの後続く単一の文字として扱うため、CenとChungが返されません。 - NLS_SORTとNLS_COMPをステップ1のときの値に設定します。
関連情報:
-
0パラメータの詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください。
NLS_LENGTH_SEMANTICSパラメータについて
このパラメータは、文字データ型CHAR、VARCHAR2、LONGの列の長さセマンティクス、つまりこれらの列がバイト単位または文字単位のどちらで指定されているかを指定します。これらの列がバイトまたは文字のいずれかで指定されるかを指定します(パラメータ設定後に宣言された列にのみ適用可能)。
指定: 文字データ型CHAR、VARCHAR2およびLONGの列の長さセマンティクス。つまり、これらの列をバイト単位で指定するか、文字単位で指定するかを指定します。これらの列がバイトまたは文字のいずれかで指定されるかを指定します(パラメータ設定後に宣言された列にのみ適用可能)。
許容値:
-
BYTE新しいCHAR、VARCHAR2、およびLONG列はバイトで指定されます。
-
CHAR新しいCHAR、VARCHAR2、およびLONG列は文字で指定されます。
デフォルト値: BYTE
SQL Developerでこの例を試すには、ワークシートに文と問合せを入力します。ワークシートの詳細は、「SQL Developerでの問合せの実行」を参照してください。ここで示される結果はSQL*Plusのもので、その書式はSQL Developerでは少し異なります。
例7-12 NLS_LENGTH_SEMANTICSがVARCHAR2列の格納に与える影響
-
NLS_LENGTH_SEMANTICSの現在の値をノートにとります。
-
ステップ1のNLS_LENGTH_SEMANTICSの値が
BYTEでない場合、次のように変更してください。ALTER SESSION SET NLS_LENGTH_SEMANTICS=BYTE; -
VARCHAR2列で表を作成します。
CREATE TABLE SEMANTICS_BYTE(SOME_DATA VARCHAR2(20)); -
「接続」タブをクリックします。
-
「接続」フレーム内で、hr_connを展開します
-
スキーマ・オブジェクト・タイプのリストから、「表」を展開します
-
表のリストで、SEMANTICS_BYTEを選択します。
「接続」フレームの右側にある「列」ペインに、「列名」SOME_DATAの「データ型」が
VARCHAR2(20 BYTE)であると表示されます。 -
NLS_LENGTH_SEMANTICSの値を
CHARに変更します。ALTER SESSION SET NLS_LENGTH_SEMANTICS=CHAR; -
VARCHAR2列で別の表を作成します。
CREATE TABLE SEMANTICS_CHAR(SOME_DATA VARCHAR2(20)); -
「接続」フレーム内で、「リフレッシュ」アイコンをクリックします。
表のリストにSEMANTICS_CHARが含まれるようになりました。
-
「SEMANTICS_CHAR」を選択します。
列ペインは、列名SOME_DATAのデータ型が
VARCHAR2(20 CHAR)であることを示しています。 -
SEMANTICS_BYTEを再度選択します。
列ペインは、列名SOME_DATAのデータ型がまだ
VARCHAR2(20 BYTE)であることを示しています。 - NLS_LENGTH_SEMANTICSの値をステップ1で指定した値に設定します。
関連情報:
-
NLS_LENGTH_SEMANTICSパラメータの詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドを参照してください。