用数值连接'$'

时间:2011-09-20 12:49:32

标签: sql-server-2005 gridview type-conversion

我的GridView的SelectCommand如下:

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 个答案:

答案 0 :(得分:6)

与许多语言一样,加号是T-SQL中的重载运算符 - 加法或字符串连接。当操作中涉及的任何类型都是数字时,优先级将添加到数字。当然,您无法以有意义的方式添加字符串和数字,因此您会收到有关转换的错误。为了将值连接为字符串,您必须告诉SQL Server它们都是字符串。一种方法是使用CONVERT

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

请注意,在Denali中,您可以使用新的CONCAT函数来避免转换,该函数将所有类型视为字符串,甚至将NULL值视为空字符串。