这是您的问题:
declare @compliance decimal(10,5)
set @compliance = 100.0 -- <----------------
select CAST(FLOOR(@compliance *10)/10.0 AS DECIMAL(3,1))
引发“将数字转换为数据类型数字的算术溢出错误”错误。更改为DECIMAL(4,1)
作品,或者按照@paola的建议,将您的状况更改为>= 100.0
decimal(p,s):
p(精度)是小数点左边和右边都将存储的最大十进制数字总数。精度必须是1到最大精度38之间的值。默认精度是18。
s(小数位数)是将存储在小数点右边的小数位数。从p减去此数字,以确定小数点左边的最大位数。
在您的情况下,decimal(3, 1)
表示总共3位数字,小数点右边是1位数字,
99.9
而decimal(4,1)
总共提供了4位数字,小数点右边是1位数字,
999.9