在简明陈述中将COUNT
结果格式化为通用格式(例如###,##0
),而不使用UDF。
我目前正在使用这样的东西,虽然它留下两位小数而很笨重:
SELECT CONVERT(VARCHAR, CAST(COUNT([id]) AS MONEY), 1) FROM tbl
我走向那个方向的原因是因为它是我在阅读MSDN中的CAST and CONVERT文档时可以找到的唯一标准格式选项。
我真的不喜欢它,但是它很顺利,因为这些数字只是在T-SQL运行后被复制并粘贴到其他文本编辑器中。它们当然必须手动格式化以删除某些地方的小数。
当然你可以构建一个用户定义的函数,比如one on this blog,但我有一个限制,使我无法为此目的构建UDF。
经过一些额外的研究后,我发现如果我使用SQL 2012,我可以使用新的T-SQL FORMAT
功能,唉,我只限于2008 R2。这当然利用了一个不同的平台,因为它是一个.NET接口。 :d
我也知道这个解决方案:Format a number with commas but without decimals in SQL Server 2008 R2?
答案 0 :(得分:7)
不是最优雅的,但你可以删除尾随的.00 with replace。
SELECT REPLACE(CONVERT(VARCHAR, CAST(COUNT([id]) AS MONEY), 1), '.00', '')
FROM tbl
答案 1 :(得分:5)
即使问题作者仍然停留在SQL Server 2008R2上,如果您有幸使用 SQL Server 2012或更新版,这是一个简洁而有效的解决方案。
SELECT FORMAT(COUNT([id]), N'N0')
FROM [tbl]
示例输出
53,234,568
SELECT FORMAT(COUNT([id]), N'N1')
FROM [tbl]
示例输出
53,234,567.9
SELECT FORMAT(COUNT([id]), N'N2')
FROM [tbl]
示例输出
53,234,567.89
(等)
SELECT FORMAT(COUNT([id]), N'#.00')
FROM [tbl]
示例输出
53234567.89