2013-04-29 30 views
6

Tôi muốn tạo một khung nhìn sẽ hiển thị thông tin từ hai bảng được nối với các trường loại khác nhau. Một trường là nvarchar và một trường khác là int. Tôi biết tôi cần phải chuyển đổi một loại trong khác nhưng không biết làm thế nào để làm điều đó. Bất kỳ trợ giúp nào sẽ được đánh giá cao.Chuyển đổi nvarchar thành int để nối các bảng SQL theo dạng xem

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 

Trả lời

15

Nhìn mã của bạn, tôi không thể biết bạn nên làm gì.

Công cụ SQL sẽ thực hiện chuyển đổi tự động để so sánh. Tuy nhiên, nếu có thể quyết định chuyển đổi trường ký tự thành một số nguyên - và sau đó nhận được một lỗi.

Vì vậy, chỉ cần đúc lĩnh vực int của bạn để nvarchar:

cast(IntField as nvarchar(255)) 

Chiều dài không quan trọng cho một sự so sánh nvarchar().

Trong truy vấn của bạn, bạn sẽ thay thế:

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

với:

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

tôi xin lỗi vì sự mô tả đầy đủ. Dbo.pck_hdr.pack_num là int và dbo.STR_ShipTrack.Reference1 là trường varchar (25). Bạn có thể vui lòng chỉ cho tôi cách tôi nên đặt mã cùng nhau không? –

+1

Nó hoạt động rất tốt. Cảm ơn bạn vì điều đó. Tôi học điều gì đó ngày hôm nay. –

Các vấn đề liên quan