Как преобразовать данные int в строку при объединении таблиц в SQL? - PullRequest
0 голосов
/ 23 октября 2018
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 голосов
/ 23 октября 2018

В соответствии с тем, что вы предоставляете (Запрос, сообщение об ошибке), есть столбец 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 должен быть одинаковым типом данных в обеих таблицах).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...