【问题标题】:SQL Server 2008 - conversion from string to int failsSQL Server 2008 - 从字符串到整数的转换失败
【发布时间】:2011-08-25 19:28:36
【问题描述】:

不知道为什么这个转换失败。

SELECT CAST('32.999' AS INT)

抛出错误说

将 varchar 值“32.000”转换为数据时转换失败 输入整数。

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

我错过了什么吗?

--编辑--

我不在乎小数点。我希望 SQL 忽略它们。

【问题讨论】:

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


    【解决方案1】:

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

    Select CAST('32.000' as float)
    

    编辑:误读了你的问题。

    我假设 SQL 正在尽力保持您的意图。当它读入您尝试转换的数值具有十进制值时,它将完全拒绝它。

    【讨论】:

    • 好点,但我不在乎小数点。我希望 SQL 忽略它们。
    • 如果将“32.000”转换为浮点数,该值的显示将为“32”。它不会尝试显示 .000 的十进制值
    • @Asdfg SQL 不会让您忽略它们,除非您明确告诉它这样做。一种方法是按照建议发送至CAST。另一种方法是一开始就不包括它们。
    【解决方案2】:

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

    【讨论】:

    猜你喜欢
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多