Declare @BadDecimal varchar(5)
Set @BadDecimal = '4.5'
Declare @GoodDecimal Decimal
Set @GoodDecimal = @BadDecimal
Select @GoodDecimal
--Outputs 5
为什么?
Declare @BadDecimal varchar(5)
Set @BadDecimal = '4.5'
Declare @GoodDecimal Decimal
Set @GoodDecimal = @BadDecimal
Select @GoodDecimal
--Outputs 5
为什么?
尝试
Declare @GoodDecimal Decimal(2,1)
编辑:请求后更改为 (2,1)。
Coentjie 打败了我 arrggg...
您需要使用以下格式声明小数 Decimal(p,s)
p = 可以存储的小数位数的最大总数,包括小数点的左侧和右侧。精度必须是 1 到最大精度 38 之间的值。默认精度为 18。
s = 小数点右侧可以存储的最大小数位数。比例必须是从 0 到 p 的值。仅当指定精度时才能指定比例。默认比例为 0;因此,0 <= s <= p。最大存储大小因精度而异。
尝试Set @BadDecimal = '4,5'
强制转换或转换为显式十进制(数字,精度)有效:
SELECT CONVERT(DECIMAL(5, 2), '4.5')
SELECT CAST('4.5' AS DECIMAL(5,2))
SQLServer 帮助指出(数字、精度)的每个组合都作为单独的数据类型处理。