日期:2014-05-17  浏览次数:20591 次

改错sql语句???
表结构如下:a1,a2都为numeric(18,6)格式的数据

a1 a2  


现在执行sql语句

update tab_ set a2=a1+a1*0.08 where id=1

报错:将 numeric 转换为数据类型 numeric 时出现算术溢出错误。


求解??

------解决方案--------------------
试试:
SQL code
update tab_ set a2=a1+convert(numeric(18,6),(a1*0.08)) where id=1

------解决方案--------------------
a1+a1*0.08,将a1*0.08,或者a1+a1*0.08格式化一下
------解决方案--------------------
根据你的错误是超长截断
所以我估计你的数据在修改操作的时候产生了超出范围的数据

你检查下 a1的值,如果a1+a1*0.08会产生超过小数点左边12位长度的值,则肯定会报这个错误

------解决方案--------------------
探讨

试试:
SQL code
update tab_ set a2=a1+convert(numeric(18,6),(a1*0.08)) where id=1

------解决方案--------------------
探讨
根据你的错误是超长截断
所以我估计你的数据在修改操作的时候产生了超出范围的数据

你检查下 a1的值,如果a1+a1*0.08会产生超过小数点左边12位长度的值,则肯定会报这个错误

------解决方案--------------------
数据超长所致
------解决方案--------------------

update tab_ set a2=convert(numeric(18,6),(a1*1.08)) where id=1