文化与金钱SQL

时间:2015-02-23 18:01:40

标签: sql-server sql-server-2008-r2

此:

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

将输出:R$ 998,547.00

在巴西,权利是:R$ 998.547,00

如何输出正确的格式?

1 个答案:

答案 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;

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