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

时间:2015-05-06 23:39:03

标签: sql-server tsql percentage

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

以下是我现在所拥有的:

{{1}}

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

6 个答案:

答案 0 :(得分:68)

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 %

答案 1 :(得分:30)

M.Ali的答案可以修改为

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

答案 2 :(得分:4)

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

RESULT:  0.97 %

答案 3 :(得分:3)

适用于所有SQL Server版本

SELECT CAST(0.973684210526315789 * 100 AS DECIMAL(18, 2))

答案 4 :(得分:1)

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

FORMAT(yournumber, '#,##0.0%')

这样做的好处是您可以控制其他内容,例如千位分隔符,而数字和'%'之间没有空格。

答案 5 :(得分:-1)

挑战性地解决了这个问题。 5号评论(马里)要求-“要求的答案是97.36%(不是0.97%)..” 因此,为此,我要附上一张照片,以便在解决方案中比较3号帖子(sqluser)。 (我在Mac上使用的是postgre_sql)

enter image description here