varchar2最多能存多少个字符,是4000还是2000,为什么我存到1333就不行了,
再多一个字符就不行了,保如下措:
ORA-01480:trailling missing from STR bin有那位大虾在varchar2中存过3000-4000个字符,我必须使用varchar2类型来存,用
long,clob 可以存进去,但比较时麻烦,不能写sql直接比较,还要取出来,大家想个
办法? 谢了!

解决方案 »

  1.   

    varchar2可以存4000个英文字符,或2000个汉字
      

  2.   

    create table test1 (id varchar2(4000));
    declare 
      -- Local variables here
      i integer;
      str varchar2(4000);
    begin
      -- Test statements here
      i:=0;
      str:='';
      while i<1000 loop
            str:=str||'1';
            i:=i+1;
      end loop;
      while i<2000 loop
            str:=str||'2';
            i:=i+1;
      end loop;
      while i<3000 loop
            str:=str||'3';
            i:=i+1;
      end loop;
      while i<4000 loop
            str:=str||'4';
            i:=i+1;
      end loop;
      insert into test1 values(str);
      commit;
    end;
    //////////////////
    SQL> select * from test1;ID
    --------------------------------------------------------------------------------
    11111111111111111111111111111111111111111111111111111111111111111111111111111111SQL> select length(trim(id)) from test1;LENGTH(TRIM(ID))
    ----------------
                4000SQL> select substr(id,1000,100) from test1;SUBSTR(ID,1000,100)
    --------------------------------------------------------------------------------
    12222222222222222222222222222222222222222222222222222222222222222222222222222222SQL> select substr(id,2000,100) from test1;SUBSTR(ID,2000,100)
    --------------------------------------------------------------------------------
    23333333333333333333333333333333333333333333333333333333333333333333333333333333SQL> select substr(id,3000,100) from test1;SUBSTR(ID,3000,100)
    --------------------------------------------------------------------------------
    34444444444444444444444444444444444444444444444444444444444444444444444444444444SQL> select substr(id,3900,100) from test1;SUBSTR(ID,3900,100)
    --------------------------------------------------------------------------------
    44444444444444444444444444444444444444444444444444444444444444444444444444444444SQL>
      

  3.   

    我也遇到同样的问题,强烈关注!!!!!!!!!!!!!!!!11我的为什么只能存1024 个字符串那??、到底是什么原因啊?oracle 不会这么烂吧!!!!!!!
      

  4.   

    应该可以收2000个汉字,你用的字符集不对。
    你用
    [HKEY_LOCAL_MACHINE\Software\ORACLE]
    "NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
    [HKEY_LOCAL_MACHINE\Software\ORACLE\ORACLE_HOME0]
    "NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
    再试一试的说
      

  5.   

    4000 byte
    是不是你字段设定的长度不对阿?
      

  6.   

    你用的什么版本的oracle。
    在8i以后的版本中varchar2最大支持4000个字符,我试验过,2000多个是可行的。
      

  7.   

    4000/1333=3.说明你的字符集是三字符集。
    如果你存的是汉字的话,4000/2=2000。
    还是看看你的字符集设置吧。
    可能是那样一种情况,我在pl/sql developer里面调试的时候,看到1000个字符后面的就见不到了,但是我把字符串写进表里面结果是4000。这个可能跟你的工具有关系。
    唉!我们经常被表象所迷惑。
      

  8.   

    要多多用LOB,是很好的东西,不要嫌烦
      

  9.   

    你看一下库结构,看length是否是4000?