2015-08-27 49 views
2

我想一个varchar列转换为钱,但我不断收到此错误的数据类型为varchar钱转换VARCHAR到钱

隐式转换是不允许的。使用CONVERT函数来运行此查询。

我没有使用像错误建议的转换功能?

Select 
    tellerID, 
    SUM(CASE 
      WHEN CONVERT(money, value1) IS NULL THEN '0' 
      ELSE CONVERT(money, value1) 
     END) AS [Total Value 1] 
From 
    intakedrawer 
Group By 
    tellerID 
Order By 
    tellerID 
+4

男人,我希望我的银行不会将我的余额存储为varchar ... –

回答

3

尝试这样的:

Select 
tellerID, 
SUM(CASE WHEN IsNumeric(value1) = 0 THEN 0 
     ELSE CAST(value1 AS decimal(18, 2)) 
END) as [Total Value 1] 
From intakedrawer 
Group By tellerID 
Order By tellerID 
1

如果你的SQL Server 2012或更高版本,你也可以使用TRY_CONVERT上。如果转换不起作用,则返回NULL。

SELECT 
tellerid, 
SUM(TRY_CONVERT(MONEY, value1)) AS [Total Value 1] 
FROM intakedrawer 
GROUP BY tellerid 
ORDER BY tellerid; 

有一个SQL小提琴here

+0

对不起,我应该指出,在我的第一篇文章中,这是SQL 2008 –

+0

无后顾之忧。在那种情况下,拉胡尔的答案就是你想要的。如果它适合你,请务必将其标记为已接受:) –