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

问题描述 投票:6回答:3

我在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
3个回答
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

5
投票

使用round函数来舍入数字:

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

1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.