2015-05-27 2 views
1

Я пытаюсь добавить $ в начале моего результата с помощью SQL. Что такое лучший способ пойти об этом с ним с той же функциональностью, как эта строка кода имеет:

CAST(AVG(e.[myAmount]) AS DECIMAL(10,2)) AS 'Total Amount' 

Я знаю, что могу сделать преобразовать его в VARCHAR и добавить его в начале заявления, но затем получает избавившись от моей средней функциональности.

+0

Вы должны обрабатывать презентации в презентации слоя и пусть база данных просто отправит вам необработанные данные. Как указано ниже: что, если существует несколько типов валют? Вы можете _know_, что их нет сейчас, но вам будет легче работать, если вы планируете это сейчас. –

+0

Действительно хорошая точка Мэтью – codeBoy

ответ

7

SQL Server 2012 +:

Использование CONCAT:

CONCAT('$', CAST(AVG(e.[myAmount]) AS DECIMAL(10,2))) AS 'Total Amount' 

SQL Server 2008 +:

See Tom's answer.


Примечание

Вы не можете сделать это в запросе, если вы когда-либо необходимо рассмотреть несколько видов валют. Получите результаты в «сыром» формате, а затем выполните преобразования в бизнес-логике сервера (а также добавьте соответствующий символ валюты).

+3

+1 на * Примечание *. Я всегда рекомендую, чтобы база данных доставляла необработанные данные и форматировала их по мере необходимости при доставке данных пользователю. –

2

Реализация, которая работает в SQL Server 2008+

SELECT '$' + CAST(CONVERT(MONEY, AVG(e.myAmount)) AS NVARCHAR) 
0

Вы можете просто cast к VARCHAR что-то вроде этого:

select '$' + CAST (CAST(AVG([myAmount]) AS DECIMAL(10,2)) as VARCHAR(13)) AS 'Total Amount' 
from average_test 

SQL Fiddle Demo

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