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