MS-SQL-Join´;按前6个字符列出的表格
你好 我有两张桌子MS-SQL-Join´;按前6个字符列出的表格,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,你好 我有两张桌子 Table1 Column1 Column2 BoB 48J124BGAS11 Eva V54318KFSGH5 John 465K33SH4674 Alex 7I7980HSH474 Table2 Column1 Column2 Apple 48J124 Samsung V54318 Google 465K33 Android 348B00 Nokia 7I7980 Alcatel 1583
Table1
Column1 Column2
BoB 48J124BGAS11
Eva V54318KFSGH5
John 465K33SH4674
Alex 7I7980HSH474
Table2
Column1 Column2
Apple 48J124
Samsung V54318
Google 465K33
Android 348B00
Nokia 7I7980
Alcatel 158360
我需要从第2列的右边开始加入6个字符。预期结果是这样的
Table3
Column1 Column2 Column3
BoB 48J124BGAS11 Apple
Eva V54318KFSGH5 Samsung
John 465K33SH4674 Google
Alex 7I7980HSH474 7I7980
我不确定是否需要在表1中为第2列右侧的前6个字符创建额外的列,然后进行连接,或者我可以创建直接连接
谢谢你的意见。不,你不需要再创建一个专栏。以下是如何联接这些表:
SELECT A.Column1, A.Column2, B.Coulmn1 FROM Table1 AS A
JOIN Table2 AS B ON B.Coulmn2 = LEFT(A.Column2, 6)
表2的第2列是否总是有6个字符 可以使用LEFT函数将联接限制为要在联接中使用的特定字符,如下所示:
SELECT
*
FROM Table1 T1
INNER JOIN TABLE2 T2 ON LEFT(T1.Column2,6) = LEFT(T2.Column2, 6)
内部联接将获得两个表中存在的结果,只需更改select*即可获得所需的列
我之所以在联接中的两个条件上都使用左pad,是因为我不知道表结构限制使用子字符串,这样您可以选择开始位置和符号计数
SELECT A.Column1, A.Column2, B.Coulmn1
FROM Table1 AS A
JOIN Table2 AS B
ON B.Coulmn2 = substring(A.Column2,0,6)
不,一般来说你不需要。