在MSSQL中跨表连接子字符串

时间:2014-04-22 08:02:01

标签: sql sql-server sql-server-2008

我有两个表,一个表有一列有一个URL,另一个表有一个来自该URL的子串

表1

Id  | URL
----------
1    ...\aaa_common\
2    ...\aaa_qa..
3    ...\aaa_test\Analytics

表2

SomeId | compname
-----------------
1         aaa_common
2         aaa_qa
3         aaa_test

可以使用字符串函数(charindex和substring)进行连接。但是有更简单的选择吗?

2 个答案:

答案 0 :(得分:2)

是的,你可以使用join,但不确定这是最好的方法,因为连接字符串不是一个好主意,我也不确定你的表中的重复值。如果需要这样做,我建议你在Table1中再添一个列,你可以使用子字符串&更新来自同一个表中的compname。然后加入两个表格,包括表格1和表格中的新栏目。表2中的compname。

同样,对于使用子字符串,您应该100%确定您的compname的索引/模式在Table1的字符串中。

请查看 DEMO

只是使用子字符串&的连接示例CHARINDEX

答案 1 :(得分:1)

你可以使用喜欢加入,但这会有点性能。

select
  *
from
  table_1 t1

  inner join table_2 t2 on
     t1.url like concat('%',t2.compname, '%')