Объединить '$' с числовым значением - PullRequest
1 голос
/ 20 сентября 2011

Команда SelectCommand для моего GridView выглядит следующим образом:

SELECT
  pubName AS Publication,
  COUNT(*) AS Total,
  SUM(CAST (price as INT)) AS Price 
FROM [SecureOrders]
WHERE DateTime >= DATEADD(day, -1, GETDATE())
GROUP BY pubName

Когда я делаю бит SUM AS Price, я хочу добавить в начало знак доллара ($), чтобы мои данные отображались как $ 109 вместо 109. Я попытался просто сделать '$' + SUM, но, конечно, это не сработало. Есть ли способ обойти это?

1 Ответ

6 голосов
/ 20 сентября 2011

Как и во многих языках, знак плюс является перегруженным оператором в T-SQL - сложение или конкатенация строк.Когда какой-либо из типов, участвующих в операции, является числовым, приоритет идет на сложение.Конечно, вы не можете добавлять строки и числа осмысленным образом, поэтому вы получаете сообщение об ошибке преобразования.Чтобы объединить значения в виде строк, вы должны сообщить SQL Server, что все они являются строками.Один из способов сделать это - использовать CONVERT:

..., '$' + CONVERT(VARCHAR(12), SUM(CAST(price AS INT))) AS Price FROM ...

. Обратите внимание, что в Denali вы сможете избежать преобразований, используя новую функцию CONCAT, которая обрабатывает всевводит как строки и даже обрабатывает значения NULL как пустые строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...