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

Neo*_*Neo 10 sql stored-procedures

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

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

CONVERT(VARCHAR(8),CONVERT(DECIMAL(8,4),((CurrentLoans.Price - PreviousLoans.Price) / PreviousLoans.Price) * 100)) 
Run Code Online (Sandbox Code Playgroud)

JNK*_*JNK 33

这里至少有一个问题:

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

Decimal(8,4)表示8位数字,4到小数点右边.但这占实际小数字符,所以你可能有这样一个值:

1234.5678

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

  • 使用`VARCHAR(9)`或`DECIMAL(7,3)`或`DECIMAL(7,4)` (3认同)