我正在尝试在 SSMS 中将varchar
转换为decimal
。
如果我对值进行硬编码,则强制转换成功。但是,如果我尝试使用变量,则该值将被截断。使用convert
函数时也会发生这种情况。
为什么会发生这种情况,如何使用变量将varchar
强制转换为正确的decimal
?
示例:
Select Cast('3.24' As Decimal(4, 3));
Result: 3.24
Declare @Number Varchar = '3.24';
Select Cast(@Number As Decimal(4, 3));
Result: 3.00
Declare @Number Varchar = '3.24';
Select Convert(decimal(4,3), @Number)
Result: 3.00
答案 0 :(得分:8)
您需要指定i
的长度。默认值为1,因此仅保留第一个数字(3)。
尝试一下:
(i - 1) // 2