關於個別 NLS 參數

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

另請參閱:

關於地區設定和 NLS_LANG 參數

語言環境是執行系統或應用程式的語言和文化環境。為 Oracle AI Database 軟體指定語言環境最簡單的方式是設定 NLS_LANG 參數。

NLS_LANG 參數會為伺服器階段作業 (例如,SQL 敘述句處理) 和從屬端應用程式 (例如,Oracle AI Database 工具中的顯示格式) 設定 NLS_LANGUAGE 和 NLS_TERRITORY 參數的預設值。NLS_LANG 參數也會設定用戶端應用程式用於輸入或顯示之資料的字元集合。

在資料庫安裝期間設定 NLS_LANG 的預設值。您可以使用 ALTER SESSION 敘述句來變更您階段作業的 NLS 參數值,包括 NLS_LANG 所設定的參數。但是,只有從屬端可以變更從屬端環境中的 NLS 設定值。

另請參閱:

關於 NLS_LANGUAGE 參數

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

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

可接受值:Oracle 支援的任何語言名稱。如需相關清單,請參閱 Oracle AI Database 全球化支援指南

預設值:由 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 AI Database 全球化支援指南

預設值:由 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 AI 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 AI 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

  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 AI Database SQL Language Reference

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

另請參閱:

關於 NLS_CALENDAR 參數

此參數指定資料庫的行事曆系統。

指定:資料庫的行事曆系統。

可接受值:Oracle 支援的任何行事曆系統。如需相關清單,請參閱 Oracle AI 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 參數

此參數指定小數字元 (分隔數字的整數與小數部分) 與群組分隔符號 (例如分隔整數群組以顯示千與百萬)。群組分隔符號是數值格式元素 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 AI 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 中的值。

另請參閱: