我们都知道在大型的数据库管理系统里,Oracle数据库不论是在数据库管理能力上还是安全性等相关方面的作用皆是有目共睹的。国内企业使用Oracle数据库的也较多,但是由于Oracle不同版本的字符集,给数据显示、数据备份、数据转换等实际工作带来了不少麻烦。
一、字符集参数
一旦数据库创建后,数据库的字符集是不能改变的。因此,考虑使用哪一种字符集是十分重要的。Oracle数据库字符集应该是操作系统本地字符集的一个超集。存取数据库的客户使用的字符集将决定选择哪一个超集,即数据库字符集应该是所有客户字符集的超集。
下面介绍一些与字符集有关的NLS_LANG参数:
NLS_LANG格式:
有三个组成部分(语言、地域和字符集),每个组成成分控制了NLS子集的特性。三个成分可以任意组合,例如:
其中:language 指定 服务器 消息的语言。
Charset 指定字符集
还有一些子集可以更明确定义NLS_LANG参数:
NLS_NUMBERIC_CHARACTERS 小数字符和组分隔开
NLS_CURRENCY 本地货币字符
NLS_ISO_CURRENCY ISO货币字符
NLS_SORT 字符排序序列
二、字符集转换
1、NLS_LANG参数的修改方法:
1)用SYS用户名登陆Oracle。
2)查看字符集内容
3)修改相应的字符子集

4) 递交COMMIT;
2、NLS_LANG参数的具体应用:
1)采用服务器端/客户端方式,两端字符集不同
修改客户端字符集:
WIN95/WIN98:修改注册表
UNIX:按照1方法,直接进入Oracle 修改。
2)不同字符集使用EXP/IMP命令
按照1方法,修改IMP端的字符集设置,如果是WIN98/WIN95系统,还必须修改注册表。注意:NLS_LANG三个子集的参数必须一致。另外,如果字符集单双字节设置不同,则不能通过修改字符集进行转换。可以使用其他方式,不修改字符集,进行Oracle数据库搬移,如数据量比较小,可以使用sqlLOAD命令,通过文本文件转换;使用其他Oracle数据库软件(ACCESS,FOXPRO等)转换。
【编辑推荐】
to_date函数比如1select to_date(2015-02-03,yyyy-mm-dd) FROM dual注意:2015-02-03格式要与yyyy-mm-dd一致
select to_date(22-Jun-03,dd-Mon-yy) from dual这个只能识别引文的。 中文的月份你可能需要转换下了用 select to_date(replace(22-Jun-03,五月,May),dd-Mon-yy) from dual.要不然也不知道有什么办法了。 通用的话就是写12个replace嵌套下。 就可以了。
如何更改oracle数据库的字符集
按以下步骤(以数据库需改为WE8ISO8859P1为例):1)、用SYSTEM登录数据库。 2)、执行 UPDATE $ SET VALUE$=WE8ISO8859P1 WHERE NAME LIKE NLS_CHAR%; 语句。 3)、修改注册表,HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0 ,NLS_LANG的值改为AMERICAN_8ISO8859P14)、重新启动数据库。 如果第2步SYSTEM没有权限执行,可以在sql*plus登录数据库管理员帐号,然后再输入语句“conn /as sysdba”也可。 登录完成后再执行UPDATE $ SET VALUE$=WE8ISO8859P1 WHERE NAME LIKE NLS_CHAR%;
发表评论