在SQL中联接表时如何将数据int转换为字符串?

时间:2018-10-22 21:18:47

标签: sql-server casting ssms

SELECT * 
FROM Items I
INNER JOIN Stocks S ON CAST(I.ItemCode AS varchar(25)) = S.ItemCode

此查询引发以下错误

  

将varchar值'DE15DRM.LPX'转换为数据类型int时转换失败

我应该在哪里使用CAST函数?添加一个WHERE子句,然后使用它?

谢谢!

1 个答案:

答案 0 :(得分:2)

根据您提供的内容(查询,错误消息),有一列INT,您尝试将其与VARCHAR(字符串)进行比较,查看您的代码

SELECT * 
FROM Items I
INNER JOIN Stocks S ON CAST(I.ItemCode AS varchar(25)) = S.ItemCode

S.ItemCodeINT列,而I.ItemCode列已经是VARCHAR,由于它具有字符串值{ {1}}。

因此,您可以(暂时)将VARCHAR列强制转换为'DE15DRM.LPX'

INT

您的主要问题不在VARCHAR函数或查询中,而是在数据建模中(SELECT * FROM Items I INNER JOIN Stocks S ON I.ItemCode = CAST(S.ItemCode AS varchar(25)) 在两个表中应该是相同的数据类型)。