2016-10-11 13 views
0

PK IDを持つ2つのテーブルがありますが、1つのテーブルには13桁のパディングがあります。SQL Server 2012パディングゼロとの結合

Table1 
PK 1234567890000 

Table2 
PK 123456789 

参加するときの最善の方法は何ですか? 私は以下の持って参加するが、何の意味も持たないエラー

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

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

答えて

2
RIGHT('0000000000000',Id) 

を取得します。たとえば、13文字の文字列'0000000000000'から、最も多くの7324004373918文字がほしいと言います。

列を修正して両方の値が同じになるようにし、文字列の操作をまったく行う必要がないようにすることをお勧めします。

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

または

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

のいずれかを使用する両方のクエリがunsargableが異なるインデックスのために作ることができることを失敗。