Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS-SQL-Join´;按前6个字符列出的表格_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

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)

不,一般来说你不需要。