В соответствии с тем, что вы предоставляете (Запрос, сообщение об ошибке), есть столбец 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
, и вы снова приводите его к VARCHAR
, потому что он имеет строковое значение 'DE15DRM.LPX'
.
Так что вы можете избежатьэто (на данный момент) путем приведения столбца INT
к VARCHAR
SELECT *
FROM Items I
INNER JOIN Stocks S ON I.ItemCode = CAST(S.ItemCode AS varchar(25))
Ваша главная проблема не в функции или запросе CAST()
, а в моделировании данных (ItemCode
должен быть одинаковым типом данных в обеих таблицах).