2015-02-23 4 views
0

Это:культура с деньгами SQL

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

Выведет: R$ 998,547.00

В Бразилии право является: R$ 998.547,00

Как я могу вывести правый формат?

+9

не имеют дб сделать форматирование. введите свой db-выход '998547,00', затем выполните форматирование в своем клиентском коде. db никогда не должен беспокоиться о том, кто сидит за клавиатурой и каков их национальный формат. –

+0

Или, если вам абсолютно необходимо, вы можете написать свой собственный UDF, который будет использовать строковые функции SQL, чтобы преобразовать тип данных денег в нужный формат строки. –

+0

@Marc B, Хорошо, ты меня достал. – Khrys

ответ

5

Вы должны использовать формат валюты с использованием выбранной культуры параметром для 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 у пользователя нет родной функции для форматирования валюты, но вы co uld загрузите некоторую библиотеку, например this, или напишите свой собственный формат или просто замените его, чтобы сделать его легким, но не таким уж случайным.

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 

SQL Fiddle

+0

' FORMAT' не доступен в sql-server-2008-r2 – Khrys

Смежные вопросы