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