无法将varchar转换为数字

时间:2017-05-25 04:01:57

标签: sql-server sql-server-2012

查询:

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

错误:

  

Itembar:varchar错误;无法将varchar转换为数字

我尝试过投射功能,但它不起作用..请建议

2 个答案:

答案 0 :(得分:3)

在SQL Server 2012+中,您可以使用TRY_CASTTRY_CONVERTTRY_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建议的那样,如果你的数据都是数字,那么将它的类型更改为任何数字类型:decimal,int,....

答案 1 :(得分:0)

尝试使用CAST执行问题陈述  的查询:

DECLARE @itembar varchar(100) = '2567.43'

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