以空格为千位分隔符的格式数字

Kri*_*lén 2 sql sql-server

第一:是的,我知道不应在数据层中进行数字格式化,但我正在使用一个无法修改的应用程序,也无法在应用程序中格式化结果集。我只能写一个查询。

对于 SQL Server 2008 查询,我想使用空格作为千​​位分隔符并四舍五入到两位小数。示例:123363.249999应显示为123 363,25.

我试过了:

SELECT REPLACE(CONVERT(varchar, CONVERT(money, 123363.249999), 1), '.00', '')
Run Code Online (Sandbox Code Playgroud)

但这导致123,363.25. 我正在寻找比用空格替换逗号和用逗号替换点更好的解决方案。在查询中设置语言环境会很好。

Joe*_*lli 5

对于 SQL Server 2008,我认为 SQL Server 中“更好”解决方案的最佳选择是编写自定义CLR 函数来处理基于区域/语言环境的格式设置。

对于 SQL Server 2012 或更高版本,已引入FORMAT函数。