zl程序教程

您现在的位置是:首页 >  其他

当前栏目

数据库报错:从数据类型 varchar 转换为 numeric 时出错。因为字段里的值有个‘0E-7‘,字段类型Decimal 值 0E-7

转换数据库 报错 类型 数据类型 字段 出错 因为
2023-09-11 14:14:50 时间

数据库报错:从数据类型 varchar 转换为 numeric 时出错。因为字段里的值有个'0E-7'

 

 解决:字段类型Decimal 值 0E-7

解决办法就是把引号去掉 

原:

insert into xxxx
 values
('0E-7')

改:

insert into xxxx
 values
(0E-7)


起初一直报错:从数据类型 varchar 转换为 numeric 时出错,检查语句没毛病,

注:sql语句是由华为云数据库生成的

最后测试发现是插入语句时的有个是'0E-7',闹不清这个值是啥意思,就看了看字段类型是

[Longitude] decimal(10,7)  NULL  ,

菜鸟一个,百度去

文章地址:https://www.iteye.com/blog/aguu125-1620326

 Decimal 值 0E-7

BigDecimal值‘0’,在IBM的JDK下,我调用setScale(8)方法得到新值为‘0.00000000’,
可是我在用sun的JDK下调用setScale(8)得到值为‘0E-8’


------分割线------

两个是相等的只是实现的toString有点区别,
jdk里的方法输出什么不能改变,sum里的setScale(int)就是返回unscaledValue × 10-scale
7以上就会用0E-7表示toString
你想要sun的jdk也实现0.00000000可以这样


BigDecimal big = new BigDecimal(0);  
DecimalFormat df=new DecimalFormat("0.00000000");  
String str=df.format(big);  
System.out.println(str);  


------分割线------

这个会导致jsp页面输出OE-8,而不是0.00000000
或者数据库精度不要超过6就ok,不用考虑那么多麻烦