现在的位置: 首页 > 综合 > 正文

excel与oracle中字符串长度

2014年03月11日 ⁄ 综合 ⁄ 共 633字 ⁄ 字号 评论关闭

有一批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中设定的长度进行比较。        

抱歉!评论已关闭.