此:
SELECT 'R$ '+convert(varchar(50), CAST(998547 as money), -1) MONEYVALUE
将输出:R$ 998,547.00
在巴西,权利是:R$ 998.547,00
如何输出正确的格式?
答案 0 :(得分:6)
您需要使用SQL Server 2012所选文化的货币格式。
像这样:
select
'R$ ' + CONVERT(varchar(50), cast(MONEYVAL as MONEY), -1) MONEYVALUE -- Custom Format
, FORMAT(MONEYVAL, 'C', 'en-us') USA
, FORMAT(MONEYVAL, 'C', 'pt-br') Brazil
from ACCOUNT;
中查找货币格式
您可以在SQL Fiddle
上看到该示例对于Sever 2008 R2,没有原生函数来格式化货币,但你可以下载一些像this这样的库,或者编写你自己的格式函数或者只是简单地使用replace来使它变得容易但不那么好。
SELECT
'R$ ' + convert(varchar(50), CAST(moneyVal as money), -1) MONEYVALUE,
'RS ' + REPLACE(REPLACE(REPLACE(CONVERT(varchar(50), (CAST(moneyVal AS money)), -1), ',', ';'), '.', ','), ';', '.')
from Account