有钱有文化SQL

Culture with money SQL

这个:

SELECT 'R$ '+convert(varchar(50), CAST(998547 as money), -1) MONEYVALUE

将输出:R$ 998,547.00

在巴西,右边是:R$ 998.547,00

如何输出正确的格式?

对于 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;

official site

处寻找货币格式

您可以在 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