SQL Server 2012加入填充零

时间:2016-10-11 18:26:17

标签: sql-server tsql sql-server-2012

我有两个带有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 )

1 个答案:

答案 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))

两者都使查询不可分,但是对于不同的索引。