比较两个没有外键的表



在2个不同的数据库中有两个表,一个表由Salutations示例Mr,Miss和其他表的名称与Salutations示例Mr.XYZ,Miss.ABC组成,因此我需要一个查询,将比较这两个表,并只给出表1中匹配称呼的那些名称。

的例子:

Table 1                       Table 2
Salutation column             Name column
Mr.,                          Mr.Abc
Miss.,                        Mr.XYZ
Mr. & Mrs.                    Mr. & Mrs. Def
Jr. xyz

因此,查询需要比较两个表并将输出作为

Mr.Abc,
Mr.Xyz
Mr. & Mrs. Def

我认为你想要join查询like:

select t2.*, t1.salutation
from table2 t2 join
table1 t1
on t2.name like concat(t1.saluation, '%');

需要注意的是,这可以返回多个匹配项。例如,任何符合"先生;,夫人!"也会匹配"先生"。要解决这个问题,您可以使用apply:

选择最长的匹配。
select t2.*, t1.salutation
from table2 t2 cross apply
(select top (1) t1.*
from table1 t1
where t2.name like concat(t1.saluation, '%')
order by len(t1.saluation) desc
) t1;

try this:

SELECT T2.*, T1.Salutation
FROM MyDatabase2.Myschema2.Table2 as T2 
INNER JOIN MyDatabase1.Myschema1.Table1 as T1
ON T2.Name LIKE '%'+T1.Salutation+'%'

相关内容

  • 没有找到相关文章