将nvarchar值'T-100-060'转换为数据类型int时转换失败

时间:2014-02-18 19:15:21

标签: sql sql-server

我运行了这个查询,我在标题中收到错误。我试图找出产品规格表中的partnumber是否退出,partnumber是否定义为products.specifications中的整数

Select  products.Specifications.ProductID
FROM    Products.Products
JOIN    Products.Specifications
ON      Products.Products.PartNumber = Products.Specifications.ProductID
where ProductTypeID = '15'

请帮助谢谢

1 个答案:

答案 0 :(得分:0)

您可以将数字转换为字符串:

Select  products.Specifications.ProductID
FROM    Products.Products
JOIN    Products.Specifications
ON      Products.Products.PartNumber = CONVERT(VARCHAR(10), Products.Specifications.ProductID)
where ProductTypeID = '15'

但是你需要确定是否有任何边缘情况需要关注 - 空白,前导零等。

  

我试图找出产品规格表中的partnumber是否退出

然后你应该使用IN

SELECT *
FROM Products.Products
WHERE PartNumber IN
(
   SELECT CONVERT(VARCHAR(10), ProductID)
   FROM Products.Specifications
)
AND ProductTypeID = '15'
如果JOINpartnumber中的多条记录匹配,则products.specifications会为您提供多项结果。