如何从查找表列中获取一行包含任何

问题描述

我有一个 Customer 表,其中包含以下行:

enter image description here

我有一个名为 Master 的查找表,如下所示:

enter image description here

正如您在 Master 查询中看到的那样,我显示的名字带有中间名。给我以下结果的最佳 SQL 查询是什么:

enter image description here

所以基本上我想在主列表的名字列中查找客户的名字,但可以任意组合。到目前为止,我已经尝试了以下但没有给我我所需要的

选项 1 - 这不是给我明确的参考编号

select distinct *.C,msurname.Ref
from Customer c 
inner join Master mfirstname on (c.firstname like '%' + mfirstname.firstname +'%')
inner join Master msurname on (c.surname like '%' + msurname.surname +'%')

选项 2 - 此选项不给我参考号

select c.*
from Customer c
where c.surname in ( select m.surname from master m 
                     where m.surname like '%' + c.surname + '%'
                     and  m.firstname like '%' + c.firstname + '%')

选项 3 - 可能是一个选项,但返回重复行,因此需要进一步检查

  select c.*,m.ref
  from Customer c 
  inner join Master m on ((c.firstname like '%' + m.firstname + '%') and  (c.surname like '%' + m.surname + '%')) 

我做错了什么?

解决方法

INSTR 可以派上用场

SELECT Customer.firstname,Customer.lastname,Customer.id,Master.ref
  FROM Customer INNER JOIN Master
ON INSTR(Master.firstname,Customer.firstname) > 0;
,

感谢@subodhkalika 的帮助。我已经在你的公式中使用了 CHARINDEX 并且有效。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...