2016-10-11 3 views
0

Ich habe zwei Tabelle mit einer PK-ID, aber eine Tabelle hat eine Auffüllung 13 Ziffern.SQL Server 2012 Verbinden Sie mit gepolsterten Nullen

Table1 
PK 1234567890000 

Table2 
PK 123456789 

Was ist der beste Ansatz beim Beitritt? Ich habe die unten kommen, aber einen Fehler

The conversion of the varchar value '7324004373918' overflowed an int column. 

    LEFT JOIN Summary C ON RIGHT('0000000000000',B.Id) = RIGHT('0000000000000',C.id) 

Antwort

2
RIGHT('0000000000000',Id) 

Bekommt keinen Sinn. Es sagt, dass Sie wollen, sagen Sie, die meisten 7324004373918 Zeichen aus der 13-Zeichen-Zeichenfolge '0000000000000'.

Der beste Weg wäre, die Spalten so zu fixieren, dass sie beide dieselben Werte enthalten und keine String-Manipulation nötig ist.

Failing, dass Sie eine der folgenden

ON T1.PK = STUFF('0000000000000', 1, LEN(T2.PK), T2.PK) 

oder

ON T2.PK = REVERSE(CAST(REVERSE(T1.PK) AS BIGINT)) 

beide verwenden machen die Abfrage unsargable aber für verschiedene Indizes.