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”不是整数。