Я хочу создать представление, которое будет отображать информацию из двух таблиц, соединенных полями разных типов. Одно поле - nvarchar, а другое - int. Я знаю, что мне нужно преобразовать один тип в другой, но не знаю, как это сделать. Любая помощь будет принята с благодарностью.

    SELECT dbo.co.co_num, dbo.pck_hdr.weight, dbo.STR_ShipTrack.TrackingNumber 
    FROM dbo.co 
INNER JOIN dbo.pck_hdr ON dbo.co.co_num = dbo.pck_hdr.co_num INNER JOIN dbo.STR_ShipTrack ON dbo.pck_hdr.pack_num = dbo.STR_ShipTrack.Reference1
13
Charalampos Afionis 29 Апр 2013 в 19:34

1 ответ

Лучший ответ

Глядя на ваш код, я тоже не могу сказать, что вам следует делать.

Механизм SQL выполняет автоматические преобразования для сравнения. Однако if может решить преобразовать символьное поле в целое число - и тогда выйдет ошибка.

Итак, просто введите свое поле int в nvarchar:

cast(IntField as nvarchar(255))

Длина не имеет значения для сравнения nvarchar().

В своем запросе вы должны заменить:

ON dbo.pck_hdr.pack_num = dbo.STR_ShipTrack.Reference1

С участием:

ON cast(dbo.pck_hdr.pack_num as nvarchar(255)) = dbo.STR_ShipTrack.Reference1
30
Gordon Linoff 29 Апр 2013 в 19:47
Прошу прощения за неполное описание. Dbo.pck_hdr.pack_num - это int, а dbo.STR_ShipTrack.Reference1 - это поле varchar (25). Не могли бы вы показать мне, как мне собрать код?
 – 
Charalampos Afionis
29 Апр 2013 в 19:42
1
Это сработало отлично. Спасибо за это. Сегодня я кое-чему научился.
 – 
Charalampos Afionis
29 Апр 2013 в 19:51