Declare @BadDecimal varchar(5)
Set @BadDecimal = '4.5'
Declare @GoodDecimal Decimal
Set @GoodDecimal = @BadDecimal
Select @GoodDecimal
--Outputs 5
为什么?SQL Server 2005 varchar丢失小数位转换为十进制
Declare @BadDecimal varchar(5)
Set @BadDecimal = '4.5'
Declare @GoodDecimal Decimal
Set @GoodDecimal = @BadDecimal
Select @GoodDecimal
--Outputs 5
为什么?SQL Server 2005 varchar丢失小数位转换为十进制
尝试
Declare @GoodDecimal Decimal(2,1)
编辑:请求后变更为(2,1)。
尝试Set @BadDecimal = '4,5'
铸造或转换为明确的小数(数字,精度)工作原理:
SELECT CONVERT(DECIMAL(5, 2), '4.5')
SELECT CAST('4.5' AS DECIMAL(5,2))
SQLServer的帮助指出的(数字,精度)的每个组合作为单独的数据类型处理。
如果在字符串中使用参数@BadDecimal,则不起作用 – digiguru 2008-12-24 10:33:40
Coentjie打我给它arrggg ...
需要声明使用此格式十进制(P,S)
p的小数=小数位数的最大总数可存储,都在小数点的左侧和右侧。精度必须是从1到38的最大精度的值。默认精度为18.
s =可存储在小数点右侧的最大小数位数。比例必须是从0到p的值。只有在指定了精度的情况下才能指定比例。默认比例是0;因此,0 < = s < = p。根据精度,最大存储大小会有所不同。
非常简洁 - 欢呼 – digiguru 2008-12-24 10:35:34
谢谢,我总是很乐意为您服务 – Coentje 2008-12-24 11:53:35