我需要加入2个表,但没有真正的共同字段。在表A中,ID字段包含表B中的ID,但在ID之前和之后还有其他字符。
TableA ID 。一个J123 00
TableB ID J123
需要根据表B中的J123将B加入A
如何编写Join语句以将表B连接到表A?
使用SQL Sever 2008
答案 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
生成重复值。