关于oracle的一些问题 
    第一、 我在创建oracle 表的时候,我就已经对数据库的字符集进行了设定,我在创建表的时候用的字符集跟创建数据库的字符集是一样的吗?
    第二、 就算创建的是一样的,我现在不想用数据库的那个字符集,我可以在表上面创建一个新的字符集吗?在同一个数据库的字符集下面,我可以建立多张表,在这些表上面可以建立不同的字符集吗?(例如一张表为utf8,一张为GBK)就象mysql那样。每张表可以自己建立自己的字符集。。这样可以吗? 如果这样可以,数据库的字符集和表的字符集的关系是什么呢?
    第三、就算这些都可以,我以后想换表或者数据库的字符集,我用什么sql去改呢?

解决方案 »

  1.   

    ORACLE字符集是在创建数据库时指定的,不能为单表指定字符集
    1、是;
    2、不行;
    3、可以修改数据库字符集,且要求先的字符集是原字符集的超集;但不提倡(可能出问题);
      

  2.   

    1, 创建表的时候可以指定字符集参数的;如果没有指定,默认就使用oracle数据库的字符集;
    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
      

  3.   

    查看 Oracle字符集及怎样修改字符集(zt)
    http://blog.csdn.net/crazylaa/archive/2009/12/19/5035971.aspxOracle 字符集测试
    http://blog.csdn.net/crazylaa/archive/2009/12/19/5035983.aspx
      

  4.   

     那我这样 
    修改只能由子集向超集改,象下面   
      US7ASCII   ->WE8ISO885971   
      US7ASCII   ->ZHS16GBK     
      US7ASCII   ->UTF8     
       WE8ISO885971和ZHS16GBK的超集是什么?那utf8 呢 怎么转换?   
      

  5.   

    你查询:
    select * from nls_database_parameters
    where parameter in('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET')这两种字符集就是你当前数据库可用的字符集。
    在表上的字符集,只能用上面查询的两种。