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

--Outputs 5

为什么?

4

4 回答 4

6

尝试

Declare @GoodDecimal Decimal(2,1)

编辑:请求后更改为 (2,1)。

于 2008-12-24T09:58:24.183 回答
4

Coentjie 打败了我 arrggg...

您需要使用以下格式声明小数 Decimal(p,s)

p = 可以存储的小数位数的最大总数,包括小数点的左侧和右侧。精度必须是 1 到最大精度 38 之间的值。默认精度为 18。

s = 小数点右侧可以存储的最大小数位数。比例必须是从 0 到 p 的值。仅当指定精度时才能指定比例。默认比例为 0;因此,0 <= s <= p。最大存储大小因精度而异。

于 2008-12-24T10:07:53.087 回答
1

尝试Set @BadDecimal = '4,5'

于 2008-12-24T09:50:54.307 回答
1

强制转换或转换为显式十进制(数字,精度)有效:

SELECT CONVERT(DECIMAL(5, 2), '4.5')
SELECT CAST('4.5' AS DECIMAL(5,2))

SQLServer 帮助指出(数字、精度)的每个组合都作为单独的数据类型处理。

于 2008-12-24T09:54:25.487 回答