有钱有文化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;
处寻找货币格式
您可以在 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
这个:
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;
处寻找货币格式
您可以在 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