不知道为什么转换失败。
SELECT CAST('32.999' AS INT)
抛出错误说
将varchar值'32 .000'转换为数据时转换失败 输入int。
我知道我可以将其转换为Decimal
,然后将其转换为Int
,但为什么32.000没有直接转换为Int
?
我在这里错过了什么吗?
- 编辑 -
我不关心小数点。我希望SQL忽略它们。
答案 0 :(得分:5)
32.000无法准确表示为int。相反,如果您想要一个带小数的数值,您可以使用浮点(或数字)数据类型。
Select CAST('32.000' as float)
编辑:误读了你的问题。
我假设SQL正在尝试保留您的意图。当它读入您尝试投射的数值具有十进制值时,它将平坦拒绝它。
答案 1 :(得分:1)
使用了SELECT CAST(ROUND('32.999',0,1) AS INT)
,效果很好。