SQL Server 2008 - 从字符串到int的转换失败

Asd*_*dfg 3 t-sql sql-server casting sql-server-2008

不知道为什么这种转换失败了.

SELECT CAST('32.999' AS INT)
Run Code Online (Sandbox Code Playgroud)

抛出错误说

将varchar值'32 .000'转换为数据类型int时转换失败.

我知道我可以将它转换为Decimal然后将其转换为Int但为什么32.000没有被Int直接转换?

我在这里错过了什么吗?

- 编辑 -

我不关心小数点.我希望SQL忽略它们.

Zha*_*ais 6

由于小数位数,32.000无法准确表示为int.相反,如果您想要一个带小数的数字值,您可以使用浮点(或数字)数据类型.

Select CAST('32.000' as float)
Run Code Online (Sandbox Code Playgroud)

编辑:误读了你的问题.

我假设SQL正在尝试保留你的意图.当它读入您尝试投射的数值具有十进制值时,它会平坦地拒绝它.