2013-04-29 24 views
6

Chcę utworzyć widok, który wyświetli informacje z dwóch tabel połączonych różnymi polami typów. Jedno pole jest nvarchar, a drugie jest int. Wiem, że muszę przekonwertować jeden typ w drugim, ale nie wiem jak to zrobić. Każda pomoc będzie bardzo ceniona.Konwersja nvarchar na int w celu dołączenia tabel SQL w widoku

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 

Odpowiedz

15

Patrząc na twój kod, nie mogę powiedzieć, co powinieneś zrobić.

Silnik SQL dokona automatycznej konwersji dla porównania. Jeśli jednak zdecydujesz się przekonwertować pole postaci na liczbę całkowitą, a następnie pojawi się błąd.

Tak, tylko oddać int pole do nvarchar:

cast(IntField as nvarchar(255)) 

Długość nie ma znaczenia dla porównania nvarchar().

w zapytaniu, należy wymienić:

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

z:

ON cast(dbo.pck_hdr.pack_num as nvarchar(255)) = dbo.STR_ShipTrack.Reference1 
+0

przepraszam za niepełną opisem. Wartość dbo.pck_hdr.pack_num to int, a dbo.STR_ShipTrack.Reference1 to pole varchar (25). Czy możesz mi pokazać, jak powinienem połączyć kod? –

+1

Udało się świetnie. Dziękuję za to. Dziś się czegoś uczę. –