Oracle 设置 sort au,Oracle学习笔记(16)字符语言环境

字符语言环境

Session级、OS环境变量:基于Client端的字符设置

Database级:Database在存储数据时的字符集(character set \national character set)

1.选择数据库的字符集模式

(1)单字节的字符集: 7-bit(128个符号)ASCII码、8-bit(256个符号)扩展ASCII码

可变宽度多字节字符集(1~3个字节之间:utf-8)、固定宽度多字节字符集 Unicode(AL32UFT8,AL16UTF16)

Database 字符集>依赖于OS字符集

(2)国际National字符集>Default(AL16UFT16)

sql>select parameter ,value frm nls_database_parmaeters //NLS_NCHAR_CHARACTERSET :AL16UFT16

选择Oracle国际字符集的方法:空间重要还是性能重要?

AL16UTF16 性能方面重要、UTF8 空间重要。

选择Unicode 数据类型:假定支持多语言;包应用;性能(单字节数据库字符集使用固定长度国际字符集);使用windows客户端可以更好的支持UTF-16

2.基于语言的行为:使用初始化参数、环境变量和ALTER SESSION命令

(优先级:初始化参数>环境变量>ALTER SESSION)环境变量:nls_date_fomat、nls_date_language、nls_sort、nls_numeric_characters、nls_currency、nls_iso_currency、nls_calendar

sql>alter session set nls_language='SIMPLIFIED CHINESE'; //简体中文

sql>select * from kong.authors; //命令执行后变成了中文

cmd: set nls_lang=AMERICAN_AMERICA.US7ASCII //设定环境变量(语言_区域.字符集)

set nls_date_format='YYYY.MM.DD' //设定环境变量(日期格式)

SQLPLUSW /NOLOG

sql>conn sys/admin1 as sysdba

sql>set wrap off

sql>set linesize 200

sql>select parameter,value from nls_instance_parameters;

sql>select * from nls_session_parameters;

sql>alter session set nls_language='SIMPLIFIED CHINESE'; //语言发生改变(nls_date_language、nls_sort)

sql>select * from nls_session_parameters;

sql>alter session set nls_territory=CHINA; //区域值发生改变(nls_currency、nls_iso_currency、nls_date_format、nls_numberic_characters)

sql>select * from nls_session_parameters; //使得货币符号、时间格式也相应随着区域的不同而改变

sql>alter session set nls_currency='$';

sql>select * from nls_session_parameters; //可以将货币符号“RMB”用“$”符号来覆盖

sql>select sysdate from dual; //系统日期格式 29-4? -2011

sql>alter session set nls_date_format='YYYY.MM.DD';

sql>select sysdate from dual; //2011.4.29

3.语言依赖性的应用程序对系统的影响sql>execute DBMS_SESSION.set_nls('NLS_DATE_FORMAT','"YYYY.MM.DD"');

sql>alter session set nls_date_format='YYYY.MM.DD';

4.NLS sort的支持

sql>alter session set nls_sort='BINARY'; //session级别支持二进制排序,nlssort支持查询语句的排序

5.在SQL语句中使用NLS参数:

SELECT to_char(hire_date,'DD.Mon.YYYY','NLS_DATE_LANGUAGE=FRENCH') FROM employee;

SELECT ename,to_char(sal,'9G999D99','NLS_NUMERIC_CHARACTERS=",."') FROM emp;

sql>select to_char(sysdate,'YYYY.MM.DD','NLS_DATE_LANGUAGE=CHINESE"') FROM DUAL;

6.索引的支持

CREATE INDEX list_word ON list(list(NLSSORT(word,'NLS_SORT=French_M')));

sql>create index TESTNLSINDEX on kong.authors(nlssort(au_lname,'NLS_SORT=French_M'))

7.获取NLS database参数信息

NLS_DATABASE_PARAMETERS:

PARAMETER(nls_characterset,nls_nchar_characterset)

sql> select parameter,value from nls_database_parameters where parameter like '%CHARACTER%';

// NLS_NUMERIC_CHARACTERS =., NLS_CHARACTERSET=ZHS16GBK NLS_NCHAR_CHARACTERSET=AL16UTF16

sql>select parameter,value from nls_instance_parameters;

sql>select parameter,value from nls_session_parameters;

8.获取NLS设置的信息:

V$NLS_VALID_VALUES(Language,sort,territory,characterset)

V$NLS_PARAMETERS(PARAMETER(NLS session parameters,NLS_CHARACTERSET))

sql>select * from v$nls_valid_values;

sql>select parameter,value from v$nls_parameters;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值