oracle中字符串保存长度,excel与oracle中字符串长度

有一批excel格式的数据要导入到oracle中,在excel中用len校验字符串长度的时候发现

并没有超过oracle中varchar2的长度限制,但在实际导入过程中却遇到了错误ORA-12899

ORA-12899: 列 "SCOTT"."CARMODEL"."MODEL" 的值太大 (实际值: 32, 最大值: 30)

查询excel的帮助后得知:

LEN 返回文本字符串中的字符数,汉字和字母、数字都按单字节计算。

LENB 返回文本字符串中用于代表字符的字节数。此函数用于双字节字符。

汉字按双字节计算,字母、数字按单字节计算。

在excel中:=len("A2测试")   返回值是4

=lenb("A2测试")  返回值是6

oracle中:length(string)计算string所占的字符长度 :返回字符串的长度,单位是字符

lengthb(string)计算string所占的字节长度 :返回字符串的长度,单位是字节

SQL> SELECT LENGTH('A2测试') LENGTH, LENGTHB('A2测试') LENGTHB FROM DUAL;

LENGTH    LENGTHB

----------         ----------

4             6

oracle中varchar2()中的长度应该是指字节数。

所以在校验的时候应该以excel中的lenb()计算出的长度与oracle中varcha2中设定的长度进行比较。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值