SQL查询-返回特定项参数的结果转换时出错

SQL查询-返回特定项参数的结果转换时出错,sql,Sql,我已创建以下查询,并收到以下错误: 我使用的查询: IF(SELECT CAST(OITM.ITEMCODE as int) FROM OITM WHERE OITM.SELLITEM = 'Y' AND OITM.PrchseItem ='N' AND OITM.ITEMCODE <> 'Avatax' AND OITM.ITEMCODE <> '5564006' A

我已创建以下查询,并收到以下错误:

我使用的查询:

        IF(SELECT CAST(OITM.ITEMCODE as int) FROM OITM 
        WHERE
        OITM.SELLITEM = 'Y' AND 
        OITM.PrchseItem ='N' AND 
        OITM.ITEMCODE <> 'Avatax' AND 
        OITM.ITEMCODE <> '5564006' AND 
        OITM.ITEMCODE <> '5564005' 
        AND OITM.InvntItem = 'N' 
        AND CAST(OITM.ITEMCODE as int)='3945000-55-500 R' ) > 0 

        BEGIN
        SELECT 'YES' FOR BROWSE
        END
错误:将varchar值3945000-55-500 R转换为数据类型int时,转换失败


非常感谢您的帮助。

我认为OITM.ITEMCODE中的数据不是整数 无法强制转换OITM.ITEMCODE,因为它的值为3945000-55-500 R,并且该值包含一些字符,如“-”、“R”,以及0和R之间的空白 当我们有时间时,我们会使用cast或convert
变量varchar只包含一个数字,如:“123”或“1457”而不是“125R”

为什么要将OITM.ITEMCODE转换为整数,因为您想将其与varchar进行比较?答案很简单:您正在尝试将字符串转换为整数,而字符串值无法转换。您希望“3945000-55-500 R”的整数值是多少?您使用的是哪种产品?SQL只是一种查询语言,不是特定数据库产品的名称,标准SQL中没有IF。请针对您正在使用的数据库产品,例如postgresql、oracle、sql server、db2等等,具体来说,您要将强制转换值与什么进行比较,在您的代码中,强制转换值大于零?是否只需要字符串的数字部分?它应该是一个类似于3945000减去55减去500大于0的计算吗?的规则要求int与字符串的比较必须首先将字符串转换为int。正如所建议的,“3945000-55-500 R”不是整数。