SELECT *
FROM Items I
INNER JOIN Stocks S ON CAST(I.ItemCode AS varchar(25)) = S.ItemCode
此查询引发以下错误
将varchar值'DE15DRM.LPX'转换为数据类型int时转换失败
我应该在哪里使用CAST
函数?添加一个WHERE
子句,然后使用它?
谢谢!
答案 0 :(得分:2)
根据您提供的内容(查询,错误消息),有一列INT
,您尝试将其与VARCHAR
(字符串)进行比较,查看您的代码
SELECT *
FROM Items I
INNER JOIN Stocks S ON CAST(I.ItemCode AS varchar(25)) = S.ItemCode
S.ItemCode
是INT
列,而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))
在两个表中应该是相同的数据类型)。