2016-10-11 3 views
0

PK ID가있는 테이블이 두 개 있지만 하나의 테이블에는 13 자의 패딩이 있습니다.SQL Server 2012 패딩 된 0으로 연결

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하지만 서로 다른 인덱스에 대해 확인하십시오.