Mik*_*oud 3 sql t-sql sql-server sql-server-2008
将COUNT结果格式化为通用格式(例如###,##0)在简明语句中并且没有UDF.
我目前正在使用这样的东西,虽然它留下两位小数并且很笨重:
SELECT CONVERT(VARCHAR, CAST(COUNT([id]) AS MONEY), 1) FROM tbl
Run Code Online (Sandbox Code Playgroud)
我走向那个方向的原因是因为它是我在阅读MSDN 的CAST和CONVERT文档时可以找到的唯一标准格式化选项.
我真的不喜欢它,但它很顺利,因为这些数字只是在T-SQL运行后被复制并粘贴到其他文本编辑器中.它们当然必须手动格式化以删除某些地方的小数.
当然你可以构建一个用户定义的函数,就像这个博客上的这个函数一样,但我有一个限制,使我无法为此目的构建UDF.
经过一些额外的研究后,我发现如果我使用SQL 2012,我可以使用新的T-SQL FORMAT功能,唉,我只限于2008 R2.这当然利用了一个不同的平台,因为它是一个.NET接口.:d
我也知道这个解决方案:在SQL Server 2008 R2中用逗号格式化数字但没有小数?
不是最优雅,但你可以删除尾随.00与替换.
SELECT REPLACE(CONVERT(VARCHAR, CAST(COUNT([id]) AS MONEY), 1), '.00', '')
FROM tbl
Run Code Online (Sandbox Code Playgroud)
尽管问题作者仍然停留在SQL Server 2008R2上,但如果您有幸使用SQL Server 2012或更高版本,这是一个简洁而有效的解决方案.
SELECT FORMAT(COUNT([id]), N'N0')
FROM [tbl]
Run Code Online (Sandbox Code Playgroud)
示例输出
53,234,568
Run Code Online (Sandbox Code Playgroud)
SELECT FORMAT(COUNT([id]), N'N1')
FROM [tbl]
Run Code Online (Sandbox Code Playgroud)
示例输出
53,234,567.9
Run Code Online (Sandbox Code Playgroud)
SELECT FORMAT(COUNT([id]), N'N2')
FROM [tbl]
Run Code Online (Sandbox Code Playgroud)
示例输出
53,234,567.89
Run Code Online (Sandbox Code Playgroud)
(等等.)
SELECT FORMAT(COUNT([id]), N'#.00')
FROM [tbl]
Run Code Online (Sandbox Code Playgroud)
示例输出
53234567.89
Run Code Online (Sandbox Code Playgroud)