關於個別 NLS 參數

可使用許多個別的 NLS 參數。

另請參閱:

關於地區設定和 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_LANGUAGE 參數

此參數指定資料庫的預設語言。

指定:資料庫的預設語言。預設慣例:

可接受值:Oracle 支援的任何語言名稱。如需相關清單,請參閱 Oracle Database Globalization Support Guide

預設值:由 NLS_LANG 設定,請參閱關於地區設定和 NLS_LANG 參數

設定下列項目的預設值:

範例 7-1 顯示將 NLS_LANGUAGE 設定為 ITALIANGERMAN 如何影響伺服器訊息與月份縮寫。

若要在 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 Globalization Support Guide

預設值:由 NLS_LANG 設定,請參閱關於地區設定和 NLS_LANG 參數

設定下列項目的預設值:

範例 7-2 顯示將 NLS_TERRITORY 設定為 JAPANAMERICA 如何影響貨幣符號。

若要在 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 函數搭配使用的預設日期格式。

指定:要與 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 設為 AMERICAFRANCE 如何影響預設、短期和長日期格式。範例 7-4 會變更 NLS_DATE_FORMAT 的值,並覆寫 NLS_TERRITORY 所設定的預設值。

若要嘗試 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_LANGUAGE 設為 FRENCH,再執行查詢。)

  6. 將 NLS_TERRITORY 設為其在步驟 1 中的值。

範例 7-4 NLS_DATE_FORMAT 置換 NLS_TERRITORY

  1. 請記下 NLS_TERRITORY 和 NLS_DATE_FORMAT 目前的值。

  2. 如果步驟 1 中的 NLS_TERRITORY 值不是 AMERICA,請變更它:

     ALTER SESSION SET NLS_TERRITORY=AMERICA;
    
  3. 如果步驟 1 中的 NLS_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_TERRITORY 和 NLS_DATE_FORMAT 設為它們在步驟 1 的值。

另請參閱:

關於 NLS_DATE_LANGUAGE 參數

此參數會指定由下列項目產生之天數與月數的名稱與縮寫語言:SQL 函數 TO_CHAR 與 TO_DATE、預設日期格式 (由 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

  1. 請注意目前沒有可用的 NLS_DATE_LANGUAGE 值。

  2. 如果步驟 1 中的 NLS_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_TIMESTAMP_FORMAT 和 NLS_TIMESTAMP_TZ_FORMAT 參數

此參數指定 TIMESTAMP audiotape 和 TIMESTAMP WITH LOCAL TIME ZONEaudiotapeTIMESTAMP 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 Language Reference

預設值:由 NLS_TERRITORY 設定,如關於 NLS_TERRITORY 參數中所述。

另請參閱:

關於 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

  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 參數

此參數指定小數字元 (分隔數字的整數與小數部分) 與群組分隔符號 (例如分隔整數群組以顯示千與百萬)。群組分隔符號是數值格式元素 G 所傳回的字元。

指定:小數字元 (用來區隔數字的整數和小數部分) 和群組分隔符號 (例如區隔整數群組以顯示千和百萬)。群組分隔符號是數值格式元素 G 所傳回的字元。

可接受值:除以下以外的任何兩個不同的單一位元組字元:

預設值:NLS_TERRITORY 設定,如關於 NLS_TERRITORY 參數中所述。

在 SQL 敘述句中,您可以用下列方式呈現數字:

範例 7-7 顯示兩個不同的 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 傳回的字元字串)。

指定:當地貨幣符號 (由數字格式元素 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_TERRITORY 和 NLS_CURRENCY 值。
  2. 如果步驟 1 中的 NLS_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_TERRITORY 和 NLS_CURRENCY 設為它們在步驟 1 的值。

另請參閱:

關於 NLS_ISO_CURRENCY 參數

此參數指定 ISO 貨幣符號 (由數字格式元素 C 傳回的字串)。

指定: ISO 貨幣符號 (由數字格式元素 C 傳回的字元字串)。

可接受的值:任何有效的幣別符號字串。

預設值:NLS_TERRITORY 設定,如關於 NLS_TERRITORY 參數中所述。

本地貨幣符號可以有兩種或以上的語意,但是 ISO 貨幣符號必須是唯一的。範例 7-9 顯示區域 AUSTRALIAAMERICA 具有相同的當地幣別符號,但有不同的 ISO 幣別符號。

若要在 SQL Developer 中嘗試此範例,請在「工作表」中輸入敘述句和查詢。如需有關「工作表」的資訊,請參閱在 SQL Developer 中執行查詢。此處顯示的是 SQL*Plus 的結果;它們的格式與 SQL Developer 稍有不同。

範例 7-9 NLS_ISO_CURRENCY

  1. 請注意目前 NLS_TERRITORY 和 NLS_ISO_CURRENCY 的值。
  2. 如果步驟 1 中的 NLS_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_TERRITORY 和 NLS_ISO_CURRENCY 設為其在步驟 1 的值。

另請參閱:

關於 NLS_DUAL_CURRENCY 參數

此參數指定雙重幣別符號 (導入以支援歐元轉換期間的歐元幣別符號)。

指定:雙重幣別符號 (導入以支援歐元轉換期間的歐元幣別符號)。

可接受的值:任何有效的幣別符號字串。

預設值:由 NLS_TERRITORY 設定,如關於 NLS_TERRITORY 參數中所述。

另請參閱:

關於 NLS_SORT 參數

此參數會為具有 ORDER BY 子句的查詢指定語言排序順序 (輪詢順序)。

指定:具有 ORDER BY 子句之查詢的語言排序順序 (輪詢順序)。

可接受值:

預設值:由 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_CIGERMAN_CI)。若要執行區分大小寫與不區分輕重音的排序,請將 _AI 附加至 NLS_SORT 參數的值 (例如 BINARY_AIFRENCH_M_AI)。

範例 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. 如果步驟 3 中的 NLS_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 中的值。

另請參閱:

關於 NLS_COMP 參數

此參數指定 SQL 作業的字元比較行為。

指定: SQL 作業的字元比較行為。

可接受值:

預設值:BINARY

範例 7-11 顯示查詢的結果可以視 NLS_COMP 設定而定。

若要在 SQL Developer 中嘗試此範例,請在「工作表」中輸入敘述句和查詢。如需有關「工作表」的資訊,請參閱在 SQL Developer 中執行查詢。此處顯示的是 SQL*Plus 的結果;它們的格式與 SQL Developer 稍有不同。

範例 7-11 NLS_COMP 會影響 SQL 字元比較

  1. 請注意目前 NLS_SORT 和 NLS_COMP 的值。
  2. 如果步驟 1 中的 NLS_SORT 和 NLS_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
    

    這次不會傳回 Chen 和 Chung,因為傳統西班牙文將 ch 視為 c 之後的單一字元。

  6. 將 NLS_SORT 和 NLS_COMP 設為其在步驟 1 中的值。

另請參閱:

關於 NLS_LENGTH_SEMANTICS 參數

此參數會指定字元資料類型 CHAR、VARCHAR2 和 LONG 之資料欄的長度語意;亦即,這些資料欄是以位元組或字元來指定。(僅適用於在設定參數之後宣告的資料欄。)

指定:字元資料類型為 CHAR、VARCHAR2 和 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 中的值。

另請參閱: