char  nchar  有什么区别???
nchar是unicode编码,那char是什么编码???
另外:下面为什么能执行????
create table test_t(
   test_char char(10),
   test_nchar nchar(10)
   )tablespace sunxf;
   
   
   
   select * from test_t;
   
   delete from test_t;
   insert into test_t values('char','nchar');
   
   declare
   v_char test_t.test_char%type;
   v_nchar test_t.test_nchar%type;
   begin
   select test_char,test_nchar into v_char,v_nchar from test_t;
   dbms_output.put_line(v_char||'  '||v_nchar);
   insert into test_t values(v_nchar,v_char);
   end; 没有显示转换也可以呀????

解决方案 »

  1.   

    主要是所占字节的不同CHAR如果存放字母数字占1个字节,存放GBK编码的汉字存放2个字节,存放UTF-8编码的汉字占用3个字节;
    NCHAR根据所选字符集来定义存放字符的占用字节数,一般都为2个字节存放一个字符(不管字符或者汉字)
      

  2.   

    比如一个汉字,在GBK下 CHAR的长度是2,在GB18030下CHAR的长度可能是4,但NCHAR的长度都是1
      

  3.   

    OPER@tl>select * from nls_database_parameters
      2  where parameter in('NLS_NCHAR_CHARACTERSET','NLS_CHARACTERSET');PARAMETER                      VALUE
    ------------------------------ --------------------------------------------------------------------
    NLS_NCHAR_CHARACTERSET         AL16UTF16
    NLS_CHARACTERSET               ZHS16GBK
    如本例,区别就是你的varchar,char将采用ZHS16GBK字符集,而nvarchar,nchar将采用AL16UTF16字符集。