将Varchar转换为十进制时的截断

时间:2019-02-27 22:40:47

标签: sql sql-server

我正在尝试在 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

1 个答案:

答案 0 :(得分:8)

您需要指定i的长度。默认值为1,因此仅保留第一个数字(3)。

尝试一下:

(i - 1) // 2
相关问题