我有两个带有PK ID的表,但是一个表有一个13位的填充。
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 )
答案 0 :(得分: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))
两者都使查询不可分,但是对于不同的索引。