一、什么是Oracle字符集
Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。
影响Oracle数据库字符集最重要的参数是NLS_LANG参数。
它的格式如下: NLS_LANG = language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。
其中:
Language:指定服务器消息的语言,影响提示信息是中文还是英文
Territory:指定服务器的日期和数字格式,
Charset: 指定字符集。
如:AMERICAN _ AMERICA. ZHS16GBK
从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。
所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。
二.字符集的相关知识:
2.1字符集
实质就是按照一定的字符编码方案,对一组特定的符号,分别赋予不同数值编码的集合。Oracle数据库最早支持的编码方案是US7ASCII。
Oracle的字符集命名遵循以下命名规则:
<Language><bit size><encoding>
即: <语言><比特位数><编码>
比如: ZHS16GBK表示采用GBK编码格式、16位(两个字节)简体中文字符集
NLS_DATE_FORMAT参数
SQL> select sysdate from dual;
SYSDATE
---------
07-NOV-08
Session altered.
SQL> select sysdate from dual;
SYSDATE
----------
2008-11-07
SQL> select sysdate from dual;
SYSDATE
---------
07-NOV-08
SQL> select sysdate from dual;
SYSDATE
----------
2008-11-07
基本上除了修改环境变量就只能通过alter session来修改了,暂时还没有找到好一点的办法。
要注意并不单是显示上的问题,而是在内部存储的值也会被覆盖:
select to_date(to_char(sysdate,'yyyy-mm-dd')) from dual
*
ERROR at line 1:
ORA-01861: literal does not match format string
在没有修改环境变量或session参数时,这个语句是无法执行的。修改后可以执行:
SQL> select to_date(to_char(sysdate,'yyyy-mm-dd')) from dual;
TO_DATE(TO
----------
2008-11-10
两种方式:设置环境变量;修改注册表。
看来NLS_DATE_FORMAT参数主要还是受到OS的影响,每次登录时会将OS的NLS_DATE_FORMAT参数加载进去。
基本上除了修改环境变量就只能通过alter session来修改了,暂时还没有找到好一点的办法。
要注意并不单是显示上的问题,而是在内部存储的值也会被覆盖:
看来NLS_DATE_FORMAT参数主要还是受到OS的影响,每次登录时会将OS的NLS_DATE_FORMAT参数加载进去。
基本上除了修改环境变量就只能通过alter session来修改了,暂时还没有找到好一点的办法。
要注意并不单是显示上的问题,而是在内部存储的值也会被覆盖:
看来NLS_DATE_FORMAT参数主要还是受到OS的影响,每次登录时会将OS的NLS_DATE_FORMAT参数加载进去。
基本上除了修改环境变量就只能通过alter session来修改了,暂时还没有找到好一点的办法。
要注意并不单是显示上的问题,而是在内部存储的值也会被覆盖: