试着看看我是否可以围绕匹配这些列构建一些逻辑。我有两张桌子
Table A
Make Model
BMW 2 Series
BMW 3 Series
BMW 3 Series GT
BMW 5 Series
BMW 5 Series GT
BMW 7 Series
Rolls-Royce Other
Mini Cooper
Mini Coupe
Table B
Make Series
BMW 2 Series
BMW 3 Series
BMW 5 Series
Bavarian Motor 7 Series
Rolls-Royce 42000 GT
Mini Cooper我需要提取输出,如下所示并存储在一个表中
Output
Make Model_A Model_B
BMW 2 Series 2 Series
BMW 3 Series 3 Series
BMW 3 Series GT 3 Series
BMW 5 Series 5 Series
BMW 5 Series GT 5 Series
BMW 7 Series 7 Series
Rolls-Royce Other 42000 GT
Mini Cooper Cooper
Mini Coupe Cooper在很大程度上,我可以使用下面的查询来匹配列:
( A.SERIES like '%' + B.model + '%'
OR B.model like '%' + A.series + '%' )但这并不处理"Coupe“vs "Cooper",劳斯莱斯或”宝马“vs”巴伐利亚汽车“的情况。
你知道我如何在T-sql或查询中处理所有这些问题吗?在这种情况下,Soundex或任何距离算法都不起作用-两者都尝试过了。
我知道我可以在一个查询中使用"union all“来处理所有情况,但关键是要处理上面的边缘情况。
提前感谢您的帮助。~蜜蜂
发布于 2015-06-26 07:38:11
为什么不像下面这样在两个表上执行JOIN,以获得匹配的型号和系列
select t1.Make,t1.Model as Model_A,
t2.Series as Model_B
from tableA t1 join tableB t2
on t1.Make = t2.Make;发布于 2015-06-28 09:27:08
我很犹豫地建议这样做,但它可能会在您的情况下工作:
( A.SERIES like '%' + B.model + '%'
OR B.model like '%' + A.series + '%' ) or
SOUNDEX(A.series) = SOUNDEX(b.model)SOUNDEX()有如此多的问题,以至于真的没有理由使用它--除非你在人口普查局工作,并想对姓氏进行分类,以便将来参考拼写变化。但是,您可能会发现它对解决此特定问题很有用。
https://stackoverflow.com/questions/31062494
复制相似问题