2013-04-29 7 views
6

Voglio creare una vista che visualizzerà le informazioni da due tabelle unite da campi di tipo diverso. L'unico campo è nvarchar e l'altro è int. So che ho bisogno di convertire un tipo nell'altro ma non so come farlo. Qualsiasi aiuto sarebbe molto apprezzato.Converti nvarchar in int per unire tabelle SQL in una vista

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 

risposta

15

Guardando il tuo codice, non posso dire né cosa dovresti fare.

Il motore SQL eseguirà le conversioni automatiche per il confronto. Tuttavia, se può decidere di convertire il campo del carattere in un numero intero - e quindi ottenere un errore.

Quindi, basta lanciare la vostra campo int a nvarchar:

cast(IntField as nvarchar(255)) 

La lunghezza non ha importanza per un confronto nvarchar().

Nel tua ricerca, si dovrebbe sostituire:

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

con:

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

Mi scuso per la descrizione incompleta. Dbo.pck_hdr.pack_num è int e dbo.STR_ShipTrack.Reference1 è il campo varchar (25). Puoi per favore mostrarmi come mettere insieme il codice? –

+1

Ha funzionato alla grande. Grazie per quello. Imparo qualcosa oggi –