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