繁体   English   中英

错误:将数字转换为数据类型varchar的算术溢出错误

[英]Error : Arithmetic overflow error converting numeric to data type varchar

错误:将数字转换为数据类型varchar的算术溢出错误。

在这一行得到错误为什么以及应该改变什么?

CONVERT(VARCHAR(8),CONVERT(DECIMAL(8,4),((CurrentLoans.Price - PreviousLoans.Price) / PreviousLoans.Price) * 100)) 

这里至少有一个问题:

CONVERT(VARCHAR(8),CONVERT(DECIMAL(8,4))

Decimal(8,4)表示8位数字,小数点右边4位。 这种考虑实际的十进制字符,所以你可能有这样一个值:

1234.5678

这是一个有效的Decimal(8,4)但不适合varchar(8)

我知道这是一个老帖子,但我只想说谢谢。 我遇到了这个确切的问题,最令人讨厌的是它从VIEW中选择时出错,但是当我使用VIEW中的select语句粘贴并将其插入TEMP TABLE时没有给出错误!

例:

select * from dvView --worked
select * from dvView where product = '5' --Broke!
--BUT
select * from #Temp_table_dvView --worked!
select * from #Temp_table_dvView where product = '5' --worked!

最后,我不得不改变视图中的一部分

select cast(productNumber as nvarchar(1), etc...

select cast(productNumber as nvarchar(2), etc...

它起作用了。

但奇怪的是,我得到的错误是

Arithmetic overflow error converting numeric to data type varchar.

而不是读取的那个

Data would be truncated

管他呢...

值得深思。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM