Sql 使用空格作为千位分隔符格式化数字

Sql 使用空格作为千位分隔符格式化数字,sql,sql-server,Sql,Sql Server,第一:是的,我知道数字格式化不能在数据层中进行,但我使用的是一个无法修改的应用程序,也不能在应用程序中格式化结果集。我只能写一个查询 对于SQLServer2008查询,我希望使用空格作为千位分隔符,并将其四舍五入为两位小数。示例:123363.249999应显示为123363,25 我试过: SELECT REPLACE(CONVERT(varchar, CONVERT(money, 123363.249999), 1), '.00', '') 但这会导致123363.25。我正在寻找比用空

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

对于SQLServer2008查询,我希望使用空格作为千位分隔符,并将其四舍五入为两位小数。示例:
123363.249999
应显示为
123363,25

我试过:

SELECT REPLACE(CONVERT(varchar, CONVERT(money, 123363.249999), 1), '.00', '')

但这会导致
123363.25
。我正在寻找比用空格代替逗号,用逗号代替点更好的解决方案。最好在查询中设置区域设置。

我认为这应该适合您:

SELECT REPLACE(REPLACE(CONVERT(varchar, CONVERT(money, 12765763363.249999), 1), ',', ' '), '.', ',');
它将输出以下内容:

12 765 763 363,25

对于SQLServer2008,我认为在SQLServer中实现“更好”解决方案的最佳选择是编写一个自定义代码来处理基于区域/语言环境的格式设置


对于SQL Server 2012或更高版本,已经引入了该功能。

这也是另一种方式,但它并不是一种真正“更干净”的方式

SELECT REPLACE(REPLACE(CONVERT(varchar,CAST(123363.249999 AS money),1),',',' '),'.',',')
输出:

123 363,25

这是最好的方法。复制并粘贴到excel中后,它会像一个符咒一样完美地工作

REPLACE(REPLACE(CONVERT(VARCHAR,CAST(@yourbig number  AS money) ,1)  ,',',' '), '.', ',')  AS 'SQL gap for thousands finally revealed'

它将
CONVERT(VARCHAR)
可能必须在那里,否则您不能用gap替换逗号。。。。我仍在努力使它变得更好、更短,但没有发现任何其他东西。。。。这里有一些建议,但它不起作用,它可能不是最合适的解决方案,但在我看来,它是最清晰的解决方案之一

SELECT LTRIM(REPLACE(FORMAT(1234567890.1234,'### ### ### ##0.00'), '.', ','))

是的,但是OP特别指出“我在寻找比用空格代替逗号,用逗号代替点更好的解决方案。”我误解了这个问题。阅读时,我将“than just”替换为“that”:/好的,但是像MySQL
FORMAT
这样的函数会更好。但是我知道在SQLServer2008.FORMAT函数中没有这样的东西-我在听!!!但无论是“空间”还是“数千”这个词在该网页上都不会出现一次。如何使用FORMAT来“格式化数字,并将空格设置为千位分隔符”?好吧,我在问题中清楚地解释了我不能修改应用程序:)我只能向它提供一个SQL查询。