优秀是一种习惯 , 生活是一种过程, 放弃是一种智慧 , 缺点是一种恩惠。 爱好:看书/K歌/上网/游泳/汉服 哼着單身情歌,彈着藍色吉它,展示突然的自我 QQ:19636427 另觅:160左右的女孩

字符集和NLS參數

上一篇 / 下一篇  2008-03-18 15:24:36

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

實現本國語言與數據庫交互的方法是用unicode字符集,unicode字符集有2种編碼方案utf-16utf-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 setnls_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 on2008-03-06at ORCL>alter session set nls_timestamp_format='yyyy-mm-dd hh:mi:s

s.ff';

 

Session altered.

 

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

 

TO_TIMESTAMP(SYSDATE)

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

2008-03-06 12:00:00.

 

NLS_TIMESTAMP_TZ_FORMAT參數:

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

i:ss.ff tzh:tzm';

 

Session altered.

 

SYS AS SYSDBA on2008-03-06at 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 on2008-03-06at 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 on2008-03-06at ORCL>alter session set nls_iso_currency=america;

 

Session altered.

 

SYS AS SYSDBA on2008-03-06at 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_creditnls_debit貸符號和借符號,默認值由nls_territory決定,只能在客戶端的環境變量中設置。

 

NLS_NUMERIC_CHARACTERS參數:

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

Session altered.

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

 

Nls_list_separator參數:

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

 

 

 

NLS的參數設置方法

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

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

 

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

 

PARAMETER                     VALUE

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

NLS_LANGUAGE                  AMERICAN

NLS_TERRITORY                 AMERICA

NLS_CURRENCY                  $

NLS_ISO_CURRENCY              

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2008-11-23  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

数据统计

  • 访问量: 4786
  • 日志数: 92
  • 建立时间: 2007-12-18
  • 更新时间: 2008-11-23

RSS订阅