SQL:如何在文本中找到单词的完全匹配

时间:2013-05-07 12:39:20

标签: sql ms-access-2007 match multiple-tables

请耐心等待我,我是Access和SQL的新手。

我要做的是编写一个SQL查询来过滤两个表 - 一个包含分为两列的单词,另一个包含文本。基本上,我想要的是一个新表格,它为我提供了两列单词与文本列的所有完全匹配。

这是一个类似的数据库,可以模拟我想要的结果:

Table A:
FirstName:               LastName:
John                     Doe
Jane                     Doe
Josh                     Smith
James                    Jones
David                    Johnson

Table B:
FullName:
Jake Davidson
Mike Peters
Jason James
John Michael Smith

Query Result:
FirstName:   LastName:      FullName:
John         Doe            John Michael Smith
Josh         Smith          John Michael Smith
James        Jones          Jason James

(注意大卫 - 戴维森的比赛没有出现。即我只想要完全匹配)

请帮助我填补空白:

SELECT TableA.FirstName,TableA.LastName, TableB.FullName
FROM TableA,TableB
WHERE TableB.FullName LIKE (has an exact match with TableA.FirstName--not sure what to put )
UNION
SELECT TableA.FirstName,TableA.LastName, TableB.FullName
FROM TableA,TableB
WHERE TableB.FullName LIKE (has an exact match with TableA.LastName--not sure what to put)
;

2 个答案:

答案 0 :(得分:0)

这将取决于你想要用超过两个名字的FullNames做什么,比如“John Jacob Smith”,但是,假设你想让它忽略中间词[s], 然后尝试

 Select firstname, lastname, fullname 
 from tableA a 
   Join tableb f 
      On f.firstname = Mid(a.fullname, 1, InStr(a.fullname, " ")-1) 
   Join tableb l 
      On l.lastname = Mid(a.fullname, InStrRev(a.FullNamee, " ")+1)

答案 1 :(得分:0)

以下是一种将FullNameFirstnameLastName进行比较的方法:

select a.Firstname, a.LastName, b.FullName
from tableA as a inner join
     tableB as b
     on instr(' '&b.FullName&' ', ' '&a.FirstName&' ') > 0 and
        instr(' '&b.FullName&' ', ' '&a.Lastname&' ') > 0

它假设名称的分隔符是一个空格(如您的示例所示)。比较将空格附加到FullName的开头和结尾,然后查找带空格的名字和姓氏。