SQL Server:舍入十进制数并转换为int(在Select中)

时间:2014-04-18 12:48:07

标签: sql sql-server select int rounding

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

如何在Select中将其舍入并转换为整数,以便我不会有小数,例如在上面的例子中它应该返回33?

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

3 个答案:

答案 0 :(得分:14)

您可以使用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

答案 1 :(得分:5)

使用round功能对数字进行舍入:

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

答案 2 :(得分:1)

如果要先对数字进行舍入,然后将其转换为整数,则还可以将0.5添加到要转换为整数的数字。

相关问题