Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 文化与金钱_Sql Server_Sql Server 2008 R2 - Fatal编程技术网

Sql server 文化与金钱

Sql server 文化与金钱,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,这: 选择'R$'+转换(varchar(50)、转换(998547作为货币)、-1)货币价值 将输出:R$998547.00 在巴西,右边是:R$998.547,00 如何输出正确的格式?您需要使用SQL Server 2012的选定区域性参数使用货币格式 像这样: select 'R$ ' + CONVERT(varchar(50), cast(MONEYVAL as MONEY), -1) MONEYVALUE -- Custom Format , FORMAT(MONEY

这:

选择'R$'+转换(varchar(50)、转换(998547作为货币)、-1)货币价值

将输出:
R$998547.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;
在下一页中查找货币格式

您可以在

对于Sever 2008 R2来说,它没有设置货币格式的本机函数,但您可以下载一些类似于库的函数,或者编写自己的格式函数,或者简单地使用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

不要让数据库进行格式化。让数据库输出
998547.00
,然后在客户端代码中进行格式化。db不必担心谁坐在键盘旁,他们的国家格式是什么。或者,如果你绝对必须这样做,你可以编写自己的自定义项,使用SQL字符串函数将货币数据类型转换为所需的字符串格式。@Marc B,好的,你明白了。@Khrys-尽管Marc B很有道理,我相信您所问问题的正确答案是Andrew在下面发布的,可能应该标记为正确。@dcary,这不是因为sql-server-2008-r2中没有
FORMAT
选项
FORMAT
在sql-server-2008-r2中不可用