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

时间:2011-08-25 19:28:36

标签: sql-server tsql sql-server-2008 casting

不知道为什么转换失败。

SELECT CAST('32.999' AS INT)

抛出错误说

  

将varchar值'32 .000'转换为数据时转换失败   输入int。

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

我在这里错过了什么吗?

- 编辑 -

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

2 个答案:

答案 0 :(得分:5)

由于小数位数,

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

Select CAST('32.000' as float)

编辑:误读了你的问题。

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

答案 1 :(得分:1)

使用了SELECT CAST(ROUND('32.999',0,1) AS INT),效果很好。