SQL Server 2005 varchar丢失小数位转换为小数

时间:2008-12-24 09:44:43

标签: sql-server decimal

Declare @BadDecimal varchar(5)
Set @BadDecimal = '4.5'
Declare @GoodDecimal Decimal
Set @GoodDecimal = @BadDecimal
Select @GoodDecimal

--Outputs 5

为什么?

4 个答案:

答案 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帮助指出(数字,精度)的每个组合都作为单独的数据类型处理。