2015-08-27 82 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

無後顧之憂。在那種情況下,拉胡爾的答案就是你想要的。如果它適合你,請務必將其標記爲已接受:) –