在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+'%'