询问varchar类型,急。。。 如果用中文的话就不要用字节数来决定大小了,将VARCHAR2改成VARCHAR2(2000 CHAR),就可以用字符数决定了,不过VARCHAR2最大也就支持4000字节,所以还是成问题,如果实在是太长就用CLOB吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 插入后你可以通过select lengthb(trim(colname)) from tbname ;来确认一下看看到底实际占用了多少个字节! 我做了试验,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 我在sql navigator上测试了一下,可以插入2000汉字,4000字符,就是说存是不成问题的,只要能够传过来。 sign,晚了一步我还在sqlplus中执行脚本呢,结果总提示长度超过2499,不能操作。原来可以用rpad啊,学到了 如果存不成问题,传应该也不成问题啊?我用SQL server Text 类型存没问题但是我用varchar (4000) 确实没办法存2000个汉字,只能存将近700个汉字和2000个英文字符4000\(2*3)个汉字请问各位大虾,是哪边有问题?或者谁有 Clob 和String类型转换 之类的东东,顺便把开发经验共享一下,小弟不胜感激!!! 你的测试工具和测试步骤是怎样的啊?检验一下在哪个步骤出的问题。根utf-8编码有很大关系,你可以看看这个http://www.vckbase.com/document/viewdoc/?id=1397 oracle存储过程调用的时候报错。大侠们进来看看,在线等!!! 连接服务器 oracle服务自动挂掉求解,高手帮帮忙 RedHat9安装Oracle9i的问题,急!! 小问题,在线等, 我在delphi中用ado动态连接oracle时老报ORA-12154:TNS:无法处理服务名 有oralce的问题向大家请教; 请教数据库导入导出命令行中文件目录的指定 pl/sql中函数与过程有什么区别 新手求教@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ oracle8.05问题 建表错误,帮忙~
你可以通过
select lengthb(trim(colname)) from tbname ;来确认一下看看到底实际占用了多少个字节!
---------- ----------
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
我还在sqlplus中执行脚本呢,结果总提示长度超过2499,不能操作。
原来可以用rpad啊,学到了
但是我用varchar (4000) 确实没办法存2000个汉字,只能存将近700个汉字和2000个英文字符
4000\(2*3)个汉字
请问各位大虾,是哪边有问题?或者谁有 Clob 和String类型转换 之类的东东,顺便把开发经验共享一下,小弟不胜感激!!!
检验一下在哪个步骤出的问题。
根utf-8编码有很大关系,你可以看看这个
http://www.vckbase.com/document/viewdoc/?id=1397