【问题标题】:Format number as percent in MS SQL Server在 MS SQL Server 中将数字格式化为百分比
【发布时间】:2015-07-17 08:13:27
【问题描述】:

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

这是我现在拥有的:

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

如果您能解释一下在任何有用的函数中的各种参数是什么。

【问题讨论】:

    标签: sql-server tsql percentage


    【解决方案1】:

    SQL Server 2012 及更高版本中,有FORMAT() 函数。您可以将'P' 参数传递给它以获取百分比。例如:

    SELECT FORMAT((37.0/38.0),'P') as [Percentage] -- 97.37 %
    

    对于support percentage decimal precision,您可以使用P0 表示无小数(整数)或使用P3 表示三位小数(97.368%)。

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

    【讨论】:

    • 对不起,我应该提到我使用的是 SQL Server 2008,所以不能使用该功能。
    • 哦,好吧!在这种情况下,您可能会发现这篇文章很有帮助,特别是解决方案 #1:raresql.com/2013/08/04/…
    • 如果我们只想要 97%。只有整数%
    • 如果你有 SQL Server 2008,FORMAT 函数非常方便。通过指定精度返回一个整数,如下所示:SELECT FORMAT(.99, 'P0');
    【解决方案2】:

    M.Ali 的回答可以修改为

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

    【讨论】:

    • 这是最好的答案,因为它适用于任何 SQL 版本。正是需要的。谢谢。
    • 对这个稍作修正。应该是 as varchar(6) 否则你将不允许 100.00% 的边缘情况
    【解决方案3】:

    在新版本的 SQL Server 中使用 FORMAT 函数更加简单,并且允许更多控制:

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

    这样做的好处是您可以控制诸如千位分隔符之类的其他内容,并且您不会在数字和“%”之间留出空格。

    【讨论】:

    • 帮我腾出空间。谢谢!
    【解决方案4】:
    SELECT cast( cast(round(37.0/38.0,2) AS DECIMAL(18,2)) as varchar(100)) + ' %'
    
    RESULT:  0.97 %
    

    【讨论】:

    • 要求的答案是 97.36 %(不是 0.97 %)
    【解决方案5】:

    对于所有 SQL Server 版本

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

    【讨论】:

    • 会喜欢使用 FORMAT()。但我正在使用 SQL 2008。效果很好。
    【解决方案6】:

    接受挑战来解决这个问题。 第 5 条评论(M.Ali)要求——“要求的答案是 97.36 %(不是 0.97 %)..” 因此,为此我附上了一张在我的解决方案中比较帖子编号 3(sqluser)的照片。 (我在 mac 上使用 postgre_sql)

    【讨论】:

    • 您的答案可能适用于 Postgres,但语法不能转换为所请求的 MS Sql Server。
    • 你对 to_char 行的看法是对的,但如果你只尝试“Cast”行功能,它应该对你有用,正如你在我加载的照片中看到的那样。
    猜你喜欢
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2016-03-13
    相关资源
    最近更新 更多