2017-05-25 63 views
1

查詢:無法轉換爲varchar到數字

Select 
    case 
     when itembar > 1.0 
      then 'yes' 
      else 'no' 
    end 
from 
    table 

錯誤:

Itembar : varchar Error; could not convert varchar to numeric

我試着投功能,但它不工作..請建議

+7

如果列itembar包含數字DAT a,它爲什麼是varchar類型的? – GurV

回答

3

在SQL Server 2012+,你可以使用TRY_CASTTRY_CONVERT,TRY_PARSE來避免轉換數據時出錯。如果有任何錯誤,這些函數返回NULL

例如可以可以做

Select case when TRY_CAST(itembar as decimal(10,2)) > 1.0 then 'yes' else 'no' end 
from table 

Select case when TRY_CONVERT(decimal(10,2), itembar) > 1.0 then 'yes' else 'no' end 
from table 

但作爲@Gurwinder建議,如果你的數據是所有的數字,然後改變它的類型,任何數值類型:小數,INT,....

0

嘗試通過使用CAST 查詢執行您的問題聲明:

DECLARE @itembar varchar(100) = '2567.43' 

Select 
    case 
     when cast(@itembar as decimal(18,4))>1.0 
      then 'yes' 
     else 'no' 
    end 
+1

如果系統因轉換數據類型出現問題而引發錯誤,則使轉換*明確*不會解決問題。它仍然會有完全相同的問題。 –