2016-10-11 2 views
0

У меня есть две таблицы с идентификатором ПК, но в одной таблице имеется 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) 

Не имеет никакого смысла. В нем говорится, что вы хотите, скажем, прав более 7324004373918 символов из строки с 13 символами '0000000000000'.

Лучшим способом было бы исправить столбцы, чтобы они содержали одни и те же значения, и нет никакой необходимости в каких-либо строковых манипуляциях вообще.

В противном случае вы можете использовать один из следующих

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

или

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

Оба сделать запрос unsargable, но и для различных индексов.

Смежные вопросы