2011-09-22 67 views
2
SELECT CASE Price WHEN '' THEN 0.0 ELSE Price END FROM Table 

如果價格空,則返回0.0,但如果列具有價值它給了我下面將varchar轉換爲數據類型數值的算術溢出錯誤?

算術溢出錯誤轉換VARCHAR數據類型的數字錯誤。

如何更改我的代碼來處理這種情況?

+0

什麼數據類型是價格列? – Joe

+0

價格欄是十進制的 – CodeHunter

+0

那麼它怎麼能等於一個空字符串呢?我不明白你的CASE聲明。 – Joe

回答

3
SELECT CASE Price WHEN '' THEN 0.0 ELSE CAST(Price AS DECIMAL(...)) END FROM Table 

隱式轉換通常會採用最小的可能類型,所以當您遇到較大的值時將會失敗。在CASE/ELSE中將您的值明確地轉換/轉換爲正確的類型。

+0

它的工作原理,其中一些列的值爲30.100000000000001,並且失敗。有沒有解決辦法? – CodeHunter

相關問題