如果用中文的话就不要用字节数来决定大小了,将VARCHAR2改成VARCHAR2(2000 CHAR),就可以用字符数决定了,不过VARCHAR2最大也就支持4000字节,所以还是成问题,如果实在是太长就用CLOB吧

解决方案 »

  1.   

    插入后
    你可以通过
    select lengthb(trim(colname)) from tbname ;来确认一下看看到底实际占用了多少个字节!
      

  2.   

    我做了试验,varchar2对于汉字可以存储最多2000个字符,对于英文字符可以存储4000个字符,试验过程如下:SQL> create table test(c varchar2(4000));表已创建。SQL> insert into test values(rpad('X',3999,'X'));已创建 1 行。SQL> select length(c),lengthb(c) from test; LENGTH(C) LENGTHB(C)
    ---------- ----------
          3999       3999已选择 1 行。SQL> rollback;重算已完成。SQL> insert into test values(rpad('X',4000,'X'));已创建 1 行。SQL> select length(c),lengthb(c) from test; LENGTH(C) LENGTHB(C)
    ---------- ----------
          4000       4000已选择 1 行。SQL> rollback;重算已完成。SQL> insert into test values(rpad('X',54646464,'X'));已创建 1 行。SQL> select length(c),lengthb(c) from test; LENGTH(C) LENGTHB(C)
    ---------- ----------
          4000       4000SQL> rollback;重算已完成。SQL> insert into test values(rpad('字',3998,'字'));已创建 1 行。SQL> select length(c),lengthb(c) from test; LENGTH(C) LENGTHB(C)
    ---------- ----------
          1999       3998已选择 1 行。SQL> rollback;重算已完成。SQL> insert into test values(rpad('字',4000,'字'));已创建 1 行。SQL> select length(c),lengthb(c) from test; LENGTH(C) LENGTHB(C)
    ---------- ----------
          2000       4000已选择 1 行。SQL> rollback;重算已完成。SQL> insert into test values(rpad('字',546466,'字'));已创建 1 行。SQL> select length(c),lengthb(c) from test; LENGTH(C) LENGTHB(C)
    ---------- ----------
          2000       4000已选择 1 行。---------------------------------------------
    结论:
        只要能输入2000个汉字,用varchar2就OK
      

  3.   

    我在sql navigator上测试了一下,可以插入2000汉字,4000字符,就是说存是不成问题的,只要能够传过来。
      

  4.   

    sign,晚了一步
    我还在sqlplus中执行脚本呢,结果总提示长度超过2499,不能操作。
    原来可以用rpad啊,学到了
      

  5.   

    如果存不成问题,传应该也不成问题啊?我用SQL server Text 类型存没问题
    但是我用varchar (4000) 确实没办法存2000个汉字,只能存将近700个汉字和2000个英文字符
    4000\(2*3)个汉字
    请问各位大虾,是哪边有问题?或者谁有 Clob 和String类型转换 之类的东东,顺便把开发经验共享一下,小弟不胜感激!!!
      

  6.   

    你的测试工具和测试步骤是怎样的啊?
    检验一下在哪个步骤出的问题。
    根utf-8编码有很大关系,你可以看看这个
    http://www.vckbase.com/document/viewdoc/?id=1397