如何解决如何从查找表列中获取一行包含任何
我有一个 Customer 表,其中包含以下行:
我有一个名为 Master 的查找表,如下所示:
正如您在 Master 查询中看到的那样,我显示的名字带有中间名。给我以下结果的最佳 SQL 查询是什么:
所以基本上我想在主列表的名字列中查找客户的名字,但可以任意组合。到目前为止,我已经尝试了以下但没有给我我所需要的
选项 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 并且有效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。