Sql server 无法将varchar转换为数值

Sql server 无法将varchar转换为数值,sql-server,sql-server-2012,Sql Server,Sql Server 2012,查询: 错误: Itembar:varchar错误;无法将varchar转换为数值 我尝试了cast函数,但它不起作用。。请建议在SQL Server 2012+中使用,以避免转换数据时出错。如果有任何错误,这些函数将返回NULL 例如,我们可以做什么 Select case when itembar > 1.0 then 'yes' else 'no' end from table 但正如@gu

查询:

错误:

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


我尝试了cast函数,但它不起作用。。请建议在SQL Server 2012+中使用,以避免转换数据时出错。如果有任何错误,这些函数将返回
NULL

例如,我们可以做什么

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

但正如@gurvinder所建议的,如果您的数据都是数字,那么将其类型更改为任何数字类型:decimal、int、.。

尝试使用 查询:

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

如果列itembar包含数字数据,为什么它是varchar类型?如果系统由于转换数据类型的问题而引发错误,那么显式转换并不能解决问题。它仍然会有完全相同的问题。
DECLARE @itembar varchar(100) = '2567.43'

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