【问题标题】:SQL Server: round decimal number and convert to int (within Select)SQL Server:四舍五入并转换为 int(在 Select 内)
【发布时间】:2014-06-02 23:39:13
【问题描述】:

我在 Select 中使用以下行,它返回一个带小数的数字, 例如33.33333.

如何在 Select 中舍入它并转换为整数,这样我就没有小数,例如在上面的例子中它应该返回 33 ?

100 * AVG(CASE WHEN col2 = col3 THEN 1.0 ELSE 0.0 END) AS matchPercent

【问题讨论】:

    标签: sql sql-server select int rounding


    【解决方案1】:

    您可以使用ROUND 函数将值四舍五入为整数:

    ROUND(INT, 100 * AVG(CASE WHEN col2 = col3 THEN 1.0 ELSE 0.0 END), 0) AS matchPercent
    

    这将保留类型,例如四舍五入的float 将保持float。如果还需要返回int数据类型(或其他整数数据类型),也需要转换一下:

    CONVERT(INT, ROUND(INT, 100 * AVG(CASE WHEN col2 = col3 THEN 1.0 ELSE 0.0 END), 0)) AS matchPercent
    

    【讨论】:

    • 转换为int 不会对数字进行四舍五入,而是将其截断。
    • @Guffa,你说得对,我怎么错过了?为你 +1。
    【解决方案2】:

    使用round函数对数字进行四舍五入:

    ROUND(100 * AVG(CASE WHEN col2 = col3 THEN 1.0 ELSE 0.0 END), 0) AS matchPercent
    

    【讨论】:

      【解决方案3】:

      如果你想先将数字四舍五入,然后将其转换为整数,也可以在要转换为整数的数字上加上 0.5。

      【讨论】:

      • 让它变得非常简单。好主意!
      猜你喜欢
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      相关资源
      最近更新 更多