關於個別 NLS 參數
可使用許多個別的 NLS 參數。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解有關設定全球化支援環境的詳細資訊
關於地區設定和 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 設定值。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解有關使用
NLS_LANG參數指定地區設定的詳細資訊 -
Oracle Database Globalization Support Guide,瞭解 Oracle Database 支援的語言、區域、字元集和其他地區設定資料的相關資訊
關於 NLS_LANGUAGE 參數
此參數指定資料庫的預設語言。
指定:資料庫的預設語言。預設慣例:
-
伺服器訊息的語言
-
SQL 函數 TO_CHAR 與 TO_DATE 中指定之天數與月數的名稱與縮寫語言
-
AM、PM、AD 以及 BC 的預設語言等同項目符號
-
指定 ORDER BY 子句時字元資料的預設排序順序
-
撰寫說明
-
肯定和否定回應的字串 (例如,YES 和 NO)
可接受值:Oracle 支援的任何語言名稱。如需相關清單,請參閱 Oracle Database Globalization Support Guide。
預設值:由 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 中的值。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解有關 NLS_LANGUAGE 參數的詳細資訊
-
「關於語言支援」
關於 NLS_TERRITORY 參數
此參數指定日期格式、時間戳記格式、小數點和群組分隔符號、當地貨幣符號、ISO 貨幣符號和雙貨幣符號的預設慣例。
指定:下列項目的預設慣例:
-
日期格式
-
時間戳記的格式
-
小數字元和群組區隔符號
-
當地貨幣符號
-
ISO 貨幣符號
-
雙貨幣符號
可接受值:Oracle 支援的任何區域名稱。如需相關清單,請參閱 Oracle Database Globalization Support Guide。
預設值:由 NLS_LANG 設定,請參閱關於地區設定和 NLS_LANG 參數。
設定下列項目的預設值:
-
NLS_DATE_FORMAT,在關於 NLS_DATE_FORMAT 參數中說明。
-
NLS_TIMESTAMP_FORMAT 和 NLS_TIMESTAMP_TZ_FORMAT,請參閱 About NLS_TIMESTAMP_FORMAT and NLS_TIMESTAMP_TZ_FORMAT Parameters 中的描述。
-
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 中的值。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解有關 NLS_TERRITORY 參數的詳細資訊
-
「關於地區支援」
關於 NLS_DATE_FORMAT 參數
此參數指定要與 TO_CHAR 和 TO_DATE 函數搭配使用的預設日期格式。
指定:要與 TO_CHAR 和 TO_DATE 函數搭配使用的預設日期格式 (在在查詢中使用轉換函數中導入)。
可接受值:任何有效的日期時間格式模型。舉例而言:
NLS_DATE_FORMAT='MM/DD/YYYY'
如需有關日期時間格式模型的資訊,請參閱 Oracle Database SQL Language Reference。
預設值:由 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 的值。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解有關 NLS_DATE_FORMAT 參數的詳細資訊
-
Oracle Database SQL Language Reference,瞭解有關 TO_CHAR 函數的詳細資訊
-
Oracle Database SQL Language Reference,瞭解有關 TO_DATE 函數的詳細資訊
關於 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 Globalization Support Guide。
預設值:由 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 中的值。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解有關 NLS_DATE_LANGUAGE 參數的詳細資訊
-
Oracle Database SQL Language Reference,瞭解有關 TO_CHAR 函數的詳細資訊
-
Oracle Database SQL Language Reference,瞭解有關 y 函數的詳細資訊
關於 NLS_TIMESTAMP_FORMAT 和 NLS_TIMESTAMP_TZ_FORMAT 參數
此參數指定 TIMESTAMP audiotape 和 TIMESTAMP WITH LOCAL TIME ZONEaudiotapeTIMESTAMP WITH LOCAL TIME ZONEaudiotape 的預設日期格式。
指定:預設日期格式:
-
TIMESTAMP 錄音帶
-
TIMESTAMP 與當地時間區域
可接受值:任何有效的日期時間格式模型。舉例而言:
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 Language Reference。
預設值:由 NLS_TERRITORY 設定,如關於 NLS_TERRITORY 參數中所述。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解有關 NLS_TIMESTAMP_FORMAT 參數的詳細資訊
-
Oracle Database Globalization Support Guide,瞭解有關 NLS_TIMESTAMP_TZ_FORMAT 參數的詳細資訊
-
Oracle Database Globalization Support Guide,瞭解有關日期 / 時間資料類型和時區支援的資訊
-
Oracle Database SQL Language Reference,瞭解 TIMESTAMP 資料外帶的詳細資訊
-
Oracle Database SQL Language Reference,瞭解 TIMESTAMP WITH LOCAL TIME ZONE 資料類型的詳細資訊
關於 NLS_CALENDAR 參數
此參數指定資料庫的行事曆系統。
指定:資料庫的行事曆系統。
可接受值:Oracle 支援的任何行事曆系統。如需相關清單,請參閱 Oracle Database Globalization Support Guide。
預設值: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 中的值。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解有關
NLS_CALENDAR參數的詳細資訊 -
「關於行事曆格式」
關於 NLS_NUMERIC_CHARACTERS 參數
此參數指定小數字元 (分隔數字的整數與小數部分) 與群組分隔符號 (例如分隔整數群組以顯示千與百萬)。群組分隔符號是數值格式元素 G 所傳回的字元。
指定:小數字元 (用來區隔數字的整數和小數部分) 和群組分隔符號 (例如區隔整數群組以顯示千和百萬)。群組分隔符號是數值格式元素 G 所傳回的字元。
可接受值:除以下以外的任何兩個不同的單一位元組字元:
-
數字字元
-
加號 (+)
-
減號 (-)
-
小於 (<)
-
大於 (>)
預設值:由 NLS_TERRITORY 設定,如關於 NLS_TERRITORY 參數中所述。
在 SQL 敘述句中,您可以用下列方式呈現數字:
-
數值文字
數值文字不括在引號中,一律使用句號 (.) 作為小數字元,絕不包含群組區隔符號。
-
文字文字
文字文字會括在單引號中。如有需要,會根據目前的 NLS 設定值潛在或明確地轉換成數字。
範例 7-7 顯示兩個不同的 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 的值變更為
",."(小數字元是句點,群組分隔符號是逗號):ALTER SESSION SET NLS_NUMERIC_CHARACTERS=".,"; -
執行下列查詢:
SELECT TO_CHAR(4000, '9G999D99') "Number" FROM DUAL;結果:
Number --------- 4,000.00 - 將 NLS_NUMERIC_CHARACTERS 設為在步驟 1 中的值。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解有關 NLS_NUMERIC_CHARACTERS 參數的詳細資訊
關於 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 的值。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解有關 NLS_CURRENCY 參數的詳細資訊
關於 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 的值。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解有關 NLS_ISO_CURRENCY 參數的詳細資訊
關於 NLS_DUAL_CURRENCY 參數
此參數指定雙重幣別符號 (導入以支援歐元轉換期間的歐元幣別符號)。
指定:雙重幣別符號 (導入以支援歐元轉換期間的歐元幣別符號)。
可接受的值:任何有效的幣別符號字串。
預設值:由 NLS_TERRITORY 設定,如關於 NLS_TERRITORY 參數中所述。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解有關 NLS_DUAL_CURRENCY 參數的詳細資訊
關於 NLS_SORT 參數
此參數會為具有 ORDER BY 子句的查詢指定語言排序順序 (輪詢順序)。
指定:具有 ORDER BY 子句之查詢的語言排序順序 (輪詢順序)。
可接受值:
-
BINARY排序順序是以資料庫字元集或本國字元集 (視資料類型而定) 的二進位序列順序為基礎。
-
Oracle 支援的任何語言排序名稱
排序順序以指定語言排序名稱的順序為基礎。語言排序名稱通常和語言名稱相同,但並非永遠如此。如需支援的語言排序名稱清單,請參閱 Oracle Database Globalization Support Guide。
預設值:由 NLS_LANGUAGE 設定,請參閱關於 NLS_LANGUAGE 參數。
範例 7-10 顯示兩個不同的 NLS_SORT 設定值如何影響相同查詢的顯示結果。設定值包括 BINARY 和傳統西班牙文 (SPANISH_M)。傳統西班牙文將 ch、ll 和 ñ 分別視為接在 c、l 和 n 之後的字母。
若要在 SQL Developer 中嘗試此範例,請在「工作表」中輸入敘述句和查詢。如需有關「工作表」的資訊,請參閱在 SQL Developer 中執行查詢。此處顯示的是 SQL*Plus 的結果;它們的格式與 SQL Developer 稍有不同。
不區分大小寫和不區分輕重音排序
Oracle Database 內的作業會區分大小寫與字元的重音符號。若要執行不區分大小寫的排序,請將 _CI 附加至 NLS_SORT 參數的值 (例如,BINARY_CI 或 GERMAN_CI)。若要執行區分大小寫與不區分輕重音的排序,請將 _AI 附加至 NLS_SORT 參數的值 (例如 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 中的值。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解有關
NLS_SORT參數的詳細資訊 -
Oracle Database Globalization Support Guide,瞭解有關不區分大小寫與不區分輕重音排序的詳細資訊
關於 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 -
將 NLS_COMP 的值變更為
LINGUISTIC:ALTER SESSION SET NLS_COMP=LINGUISTIC; -
重複步驟 3 的查詢。
結果:
LAST_NAME ------------------------- Cabrio Cambrault Cambrault Colmenares 4 rows selected這次不會傳回 Chen 和 Chung,因為傳統西班牙文將
ch視為c之後的單一字元。 - 將 NLS_SORT 和 NLS_COMP 設為其在步驟 1 中的值。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解有關 NLS_COMP 參數的詳細資訊
關於 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 中的值。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解 NLS_LENGTH_SEMANTICS 參數的詳細資訊
-
「關於長度語意」