我试图简单地将数字格式化为两位小数的百分比。如果它是37除以38(又名.973684210526315789),我希望它在SQL输出中显示97.36%。我知道建议在应用程序中进行格式化,但这是为了自动导出。这是使用SQL Server 2008。
这就是我现在拥有的:
select CONVERT(VARCHAR(50),cast(37 as decimal)/cast(38 as decimal)*100)+' %' AS [%]
如果您可以在任何有用的函数中解释各种参数的含义。
M.Ali的答案可以修改为
select Cast(Cast((37.0/38.0)*100 as decimal(18,2)) as varchar(5)) + ' %' as Percentage
在SQL Server 2012及更高版本中,有FORMAT()
函数。你可以传递一个'P'
参数百分比。例如:
SELECT FORMAT((37.0/38.0),'P') as [Percentage] -- 97.37 %
对于support percentage decimal precision,您可以使用P0
表示无小数(整数)或P3
表示3位小数(97.368%)。
SELECT FORMAT((37.0/38.0),'P0') as [WholeNumberPercentage] -- 97 %
SELECT FORMAT((37.0/38.0),'P3') as [ThreeDecimalsPercentage] -- 97.368 %
SELECT cast( cast(round(37.0/38.0,2) AS DECIMAL(18,2)) as varchar(100)) + ' %'
RESULT: 0.97 %
并适用于所有SQL Server版本
SELECT CAST(0.973684210526315789 * 100 AS DECIMAL(18, 2))
在新版本的SQL Server中使用FORMAT功能要简单得多,并且可以实现更多控制:
FORMAT(yournumber, '#,##0.0%')
这样做的好处是你可以控制其他的东西,如千位分隔符,你不会在数字和'%'之间得到这个空格。