格式编号,以MS SQL Server中的百分比表示

use*_*237 31 t-sql sql-server percentage

我试图简单地将数字格式化为两位小数的百分比.如果它是37除以38(又名.973684210526315789),我希望它在SQL输出中显示97.36%.我知道建议在应用程序中进行格式化,但这是为了自动导出.这是使用SQL Server 2008.

这就是我现在拥有的:

select CONVERT(VARCHAR(50),cast(37 as decimal)/cast(38 as decimal)*100)+' %' AS [%]
Run Code Online (Sandbox Code Playgroud)

如果您可以在任何有用的函数中解释各种参数的含义.

jbe*_*ock 82

SQL Server 2012及更高版本中,有FORMAT()功能.您可以传递'P'百分比参数.例如:

SELECT FORMAT((37.0/38.0),'P') as [Percentage] -- 97.37 %
Run Code Online (Sandbox Code Playgroud)

支持百分比小数精度,可以使用P0无小数(整数)或P33小数(97.368%).

SELECT FORMAT((37.0/38.0),'P0') as [WholeNumberPercentage] -- 97 %
SELECT FORMAT((37.0/38.0),'P3') as [ThreeDecimalsPercentage] -- 97.368 %
Run Code Online (Sandbox Code Playgroud)

  • 如果你有SQL Server 2008,那么FORMAT功能非常方便.通过指定精度返回整数:SELECT FORMAT(.99,'P0'); (4认同)
  • 如果我们只想要97%怎么办?只有整数% (3认同)
  • 抱歉,我应该提到我正在使用SQL Server 2008,所以不能使用该功能。 (2认同)

Sha*_*rad 36

M.Ali的答案可以修改为

select Cast(Cast((37.0/38.0)*100 as decimal(18,2)) as varchar(5)) + ' %' as Percentage
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的答案,因为它适用于任何SQL版本.究竟需要什么.谢谢. (2认同)
  • 对此稍加修正。应该是 `as varchar(6)` 否则你不会允许 100.00% 的边缘情况 (2认同)

小智 9

在新版本的 SQL Server 中使用 FORMAT 函数要简单得多,并且可以进行更多的控制:

FORMAT(yournumber, '#,##0.0%')
Run Code Online (Sandbox Code Playgroud)

这样做的好处是你可以控制额外的东西,比如千位分隔符,并且数字和“%”之间没有空格。

  • 帮助我腾出空间。谢谢 ! (2认同)

M.A*_*Ali 5

SELECT cast( cast(round(37.0/38.0,2) AS DECIMAL(18,2)) as varchar(100)) + ' %'

RESULT:  0.97 %
Run Code Online (Sandbox Code Playgroud)

  • 要求的答案是97.36%(不是0.97%) (3认同)