试着看看我是否可以围绕匹配这些列构建一些逻辑。 我有2张桌子
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"来处理所有情况。在单个查询中运行,但关键是处理上述边缘情况。
提前感谢您的帮助。 〜蜂
答案 0 :(得分:0)
为什么不在下面的两个表上执行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;
答案 1 :(得分:0)
我更愿意建议这一点,但它可能适用于您的情况:
( A.SERIES like '%' + B.model + '%'
OR B.model like '%' + A.series + '%' ) or
SOUNDEX(A.series) = SOUNDEX(b.model)
SOUNDEX()
有很多问题,根本没有理由使用它 - 除非你为人口普查局工作,并希望根据拼写变化对姓氏进行分类以备将来参考。但是,您可能会发现它对这个特定问题很有用。