将Varchar转换为十进制时截断

1 sql sql-server

我想在SSMS中转换varchar为a .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
Run Code Online (Sandbox Code Playgroud)

Aar*_*etz 9

你需要给出@Number一个长度.默认值为1,因此它只保留第一个数字(3).

试试这个:

Declare @Number Varchar(20) = '3.24';
Select  Cast(@Number As Decimal(4,2));
Result: 3.24
Run Code Online (Sandbox Code Playgroud)

  • 哦哇谢谢你我现在觉得很傻.我还是SQL新手. (3认同)