使用通配符连接2个表

时间:2014-07-18 15:53:44

标签: sql

我需要加入2个表,但没有真正的共同字段。在表A中,ID字段包含表B中的ID,但在ID之前和之后还有其他字符。

TableA ID 。一个J123 00

TableB ID J123

需要根据表B中的J123将B加入A

如何编写Join语句以将表B连接到表A?

使用SQL Sever 2008

1 个答案:

答案 0 :(得分:0)

您可以使用like。性能不佳但它可以工作:

select *
from tableA a join
     tableB b
     on a.id like '%' + b.id + '%';

请注意,这可能会发生意想不到的事情。例如,值为10的所有ID都与100匹配。除非你有办法知道a中的哪些字符实际上是id字段,否则你可能不得不忍受这个。

并且,当人们希望表的主键表示某些内容时,就会出现这种情况。这是匿名主键的一个很好的参数。没有人会想到试图解释它。如果有人想要有关它的信息,他们可以在适当的表格中查找。

编辑:

如果您愿意,可以使用exists子句来编写:

select *
from tableA a
where exists (select 1 from tableB b where  a.id like '%' + b.id + '%');

如果有多个匹配值,则不会从tableA生成重复值。