关于oracle的一些问题
第一、 我在创建oracle 表的时候,我就已经对数据库的字符集进行了设定,我在创建表的时候用的字符集跟创建数据库的字符集是一样的吗?
第二、 就算创建的是一样的,我现在不想用数据库的那个字符集,我可以在表上面创建一个新的字符集吗?在同一个数据库的字符集下面,我可以建立多张表,在这些表上面可以建立不同的字符集吗?(例如一张表为utf8,一张为GBK)就象mysql那样。每张表可以自己建立自己的字符集。。这样可以吗? 如果这样可以,数据库的字符集和表的字符集的关系是什么呢?
第三、就算这些都可以,我以后想换表或者数据库的字符集,我用什么sql去改呢?
第一、 我在创建oracle 表的时候,我就已经对数据库的字符集进行了设定,我在创建表的时候用的字符集跟创建数据库的字符集是一样的吗?
第二、 就算创建的是一样的,我现在不想用数据库的那个字符集,我可以在表上面创建一个新的字符集吗?在同一个数据库的字符集下面,我可以建立多张表,在这些表上面可以建立不同的字符集吗?(例如一张表为utf8,一张为GBK)就象mysql那样。每张表可以自己建立自己的字符集。。这样可以吗? 如果这样可以,数据库的字符集和表的字符集的关系是什么呢?
第三、就算这些都可以,我以后想换表或者数据库的字符集,我用什么sql去改呢?
1、是;
2、不行;
3、可以修改数据库字符集,且要求先的字符集是原字符集的超集;但不提倡(可能出问题);
2,如上所示,创建表的时候指定字符集就可以了;
3,想换就换了。
下面是查看和修改Oracle服务器端的字符集两方法:方法一:1) 查看服务器端字符集:select * from v$nls_parameters;select * from nls_database_parameters;select * from sys.props$;2) 修改服务器端字符集(用sys用户):首先执行:update props$ set value$ = 'WE8ISO8859P1' where name ='NLS_CHARACTERSET';update props$ set value$ = 'china' where name ='NLS_LANGUAGE';提交(commit),然后,重新启动数据库;3)用客户端工具(PL/SQL DEVELOP or PB etc.)查询数据库,若显示乱码,先查询出数据库端的字符集,然后,从注册表中修改NLS_LANG字段的值,可能为AMERICAN_AMERICA.WE8ISO8859P1或者SIMPLIFIED CHINESE_CHINA.ZHS16GBK或者NA等。
方法二:alter system enable restricted session;alter database ORCL character set ZHS16GBK;alter database ORCL national character set ZHS16GBK;本文来自: IT知道网(http://www.itwis.com) 详细出处参考:http://www.itwis.com/html/database/oracle/20090119/3203.html
http://blog.csdn.net/crazylaa/archive/2009/12/19/5035971.aspxOracle 字符集测试
http://blog.csdn.net/crazylaa/archive/2009/12/19/5035983.aspx
修改只能由子集向超集改,象下面
US7ASCII ->WE8ISO885971
US7ASCII ->ZHS16GBK
US7ASCII ->UTF8
WE8ISO885971和ZHS16GBK的超集是什么?那utf8 呢 怎么转换?
select * from nls_database_parameters
where parameter in('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET')这两种字符集就是你当前数据库可用的字符集。
在表上的字符集,只能用上面查询的两种。