字符集和NLS參數

oracle 8I開始,oracle 支持多種語言,可以使用戶通過本國語言與數據庫交互,

實現本國語言與數據庫交互的方法是用unicode字符集,unicode字符集有2种編碼方案utf-16 utf-8

支持unicode編碼的數據庫字符集類型有utf8,al32utf7,utfe,一般優先使用utf8.

這樣在同一台數據服務器上存儲不同類型語種的語言,而在讀取不同語言的客戶端配置不同的字符集。

 

Oracle 提供一系列參數可以定制數據庫和客戶機以適應本地格式,這些格式可以在數据庫創建后更改。

SYS AS SYSDBA on 2008-03-06 09:10:07 at ORCL>show parameter nls

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

nls_calendar                         string

nls_comp                             string

nls_currency                         string

nls_date_format                      string

nls_date_language                    string

nls_dual_currency                    string

nls_iso_currency                     string

nls_language                         string      AMERICAN

nls_length_semantics                 string      BYTE

nls_nchar_conv_excp                  string      FALSE

nls_numeric_characters               string

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

nls_sort                             string

nls_territory                        string      AMERICA

nls_time_format                      string

nls_time_tz_format                   string

nls_timestamp_format                 string

nls_timestamp_tz_format              string

SYS AS SYSDBA on 2008-03-06 09:33:37 at ORCL>

 

NLS_LANGUAGE 參數:

設置客戶和服務器端的顯示語言

SYS AS SYSDBA on 2008-03-06 09:44:45 at ORCL>alter session set nls_language='TRADITIONAL CHINESE';

已更改階段作業.

 

在將語言改稱SIMPLIFIED CHESESE 或者TRADITIONAL CHINESE時,要在語言的英文名上加單引號。

SYS AS SYSDBA on 2008-03-06 09:49:15 at ORCL>alter session set nls_language=ENGLISH;

 

Session altered.

 

改稱英文時,不需要添加引號。

 

NLS_TERRITORY 參數:

NLS決定日期,時間,貨幣等的顯示格式,設置國家,或地區的英文名。

SYS AS SYSDBA on 2008-03-06 09:49:29 at ORCL>alter session set nls_territory=china;

Session altered.

默認的貨幣符號就會設成Y

如果oracle 客戶端指定了NLS_LANG值,那麽連接時,在初始化參數中設置nls_territory值就會被nls_lang值覆蓋。

SYS AS SYSDBA on 06-MAR-08 at ORCL>alter session set nls_territory=america ;

Session altered.

 

SYS AS SYSDBA on 06-MAR-08 at ORCL>select ename,to_char(sal,'l99g999d99') from scott.emp;

 

ENAME      TO_CHAR(SAL,'L99G999

---------- --------------------

SMITH                   $800.00

ALLEN                 $1,600.00

WARD                  $1,250.00

 

NLS_CALENDAR參數

這個參數設置日曆,默認的是公曆,此參數一般不用設置。

 

NLS_DATE_FORMAT 參數

默認值為nls_territory參數決定,典型的日期設計格式如下:dd-mm-rr

 

NLS_DATE_LANGUAGE參數

SYS AS SYSDBA on 06-MAR-08 at ORCL>alter session set nls_date_language=english;

 

Session altered.

 

SYS AS SYSDBA on 06-MAR-08 at ORCL>select to_char(sysdate,'day:dd month yyyy') from dual;

 

TO_CHAR(SYSDATE,'DAY:DDMONTHYYYY')

-----------------------------------

thursday :06 march     2008

 

NLS_TIMESTAMP_FORMAT參數

設置時間顯示格式  如:

 

SYS AS SYSDBA on 2008-03-06 at ORCL>alter session set nls_timestamp_format='yyyy-mm-dd hh:mi:s

s.ff';

 

Session altered.

 

SYS AS SYSDBA on 2008-03-06 at ORCL>select to_timestamp(sysdate) from dual;

 

TO_TIMESTAMP(SYSDATE)

---------------------------------------------------------------------------

2008-03-06 12:00:00.

 

NLS_TIMESTAMP_TZ_FORMAT 參數:

SYS AS SYSDBA on 2008-03-06 at ORCL>alter session set nls_timestamp_tz_format='yyyy-mm-dd hh:m

i:ss.ff tzh:tzm';

 

Session altered.

 

SYS AS SYSDBA on 2008-03-06 at ORCL>select to_timestamp_tz(sysdate) from dual;

 

TO_TIMESTAMP_TZ(SYSDATE)

---------------------------------------------------------------------------

2008-03-06 12:00:00. +08:00

 

tzh:tzm 時區時間:時區名稱

 

NLS_CURRENCY 參數

設置貨幣符號 $等,如果設置此參數,將覆蓋nls_territory參數

SYS AS SYSDBA on 2008-03-06 at ORCL>select to_char(hisal,'l099g999d99') from scott.salgrade;

 

TO_CHAR(HISAL, 'L099G9

---------------------

          $001,200.00

'L099G9中的L表示貨幣符號

 

NLS_ISO_CURRENCY參數:

設置貨幣符號,ISO 貨幣符號是由字母組成的,例如,USD表示美元,CNY 表示人民幣。

 

SYS AS SYSDBA on 2008-03-06 at ORCL>alter session set nls_iso_currency=america;

 

Session altered.

 

SYS AS SYSDBA on 2008-03-06 at ORCL>select to_char(hisal,'c099g999d99') from scott.salgrade;

 

TO_CHAR(HISAL,'C09

------------------

     USD001,200.00

     USD001,400.00

     USD002,000.00

     USD003,000.00

     USD009,999.00

 

c099g999d99 中的C表示用貨幣符號表示。

 

NLS_DUAL_CURRENCY參數

一般不用設置

NLS_MONETARY_CHARACTERS參數

設置表示金額的數字的小數點和分組分隔符,和後面的數字參數nls_numeric_characters 相似,如果nls_territory 設置為america, 那麽就用’1,001.01‘格式表示金額,’,‘表示組分隔符,用’.’表示小數點。

 

Nls_credit nls_debit 貸符號和借符號,默認值由nls_territory決定,只能在客戶端的環境變量中設置。

 

NLS_NUMERIC_CHARACTERS 參數:

SYS AS SYSDBA on 2008-03-06 at ORCL>alter session set nls_numeric_characters=',.';

Session altered.

使用’ ,’表示分隔符,’.’表示小數點。

 

Nls_list_separator參數:

設置一連串數字的分隔符,通常用’;:,.’分開,列表分割符可以設置任何單字節字符,但不能和表示nls_numeric_characters的字符相同,否則會混淆。

 

 

 

NLS 的參數設置方法

初始化參數設置,環境變量設置,session設置。

初始化參數設置即修改初始化參數文件值,設之後永久有效,session設置只修改當前session的值,session結束后,設置也跟著消失,環境變量設置既修改環境變量值或從註冊表設置。

 

SYS AS SYSDBA on 2008-03-06 at ORCL>select * from nls_database_parameters;

 

PARAMETER                      VALUE

------------------------------ --------------------

NLS_LANGUAGE                   AMERICAN

NLS_TERRITORY                  AMERICA

NLS_CURRENCY                   $

NLS_ISO_CURRENCY              

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/701141/viewspace-209680/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/701141/viewspace-209680/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值