使用to_number转换过程中报的错。
网上有很多是说null造成的,多是采用把空转为某个数字字符再进行转换。
但是今天却遇到了,怎么转换还是报无效数字的错误.
1.首先我的数据是由excel导入到Oracle数据库中。有的数值导入Oracle中会被转换科学计数法,有"e"存在。
验证是否存在"e"语句
select * from tablename where columnname like "%e%";
2.是否存在null值。
select * from tablename where columnname is null;
3.是否存在非法数值,如:'_'或者','等等。
如果以上三种情况都排除,但是使用to_number还是报无效数字的错误,
该怎么办?
今天有位前辈帮忙解决了问题
就是这么处理的
to_number(nvl(字段名,'0'),'9999D99')
nvl函数就是将字段为空值的属性值置为0
后面的参数"9999D99"表示转换为四位整数两位小数
如果是1位整数位三位小数位,则参数是"9D999"
网上有很多是说null造成的,多是采用把空转为某个数字字符再进行转换。
但是今天却遇到了,怎么转换还是报无效数字的错误.
1.首先我的数据是由excel导入到Oracle数据库中。有的数值导入Oracle中会被转换科学计数法,有"e"存在。
验证是否存在"e"语句
select * from tablename where columnname like "%e%";
2.是否存在null值。
select * from tablename where columnname is null;
3.是否存在非法数值,如:'_'或者','等等。
如果以上三种情况都排除,但是使用to_number还是报无效数字的错误,
该怎么办?
今天有位前辈帮忙解决了问题
就是这么处理的
to_number(nvl(字段名,'0'),'9999D99')
nvl函数就是将字段为空值的属性值置为0
后面的参数"9999D99"表示转换为四位整数两位小数
如果是1位整数位三位小数位,则参数是"9D999"