带通配符的SQL连接表(MS Access)

时间:2016-12-09 18:24:57

标签: sql ms-access

如何使用通配符加入以下表格?我想从People表中获取所有不同的行,其中包含SearchedPeople表中的SearchedName。

SearchedPeople:

SearchedName             
--------  
Andrew
John
John Smith 

人:

ID  PersonName      Attribute      Age
----------------------------------------
1   John Smith          1           23
2   John Smith Jr       3           25
3   John Smith Jr II    4           73
4   Kevin               2           21
5   Andrew Smith        1           14
6   Marco               5           90

期望的输出:

PersonName      Attribute      Age
----------------------------------------
John Smith          1           23
John Smith Jr       3           25
John Smith Jr II    4           73
Andrew Smith        1           14

我到目前为止的代码并不令人烦恼。它返回三个空行(为什么会这样?)。

 SELECT b.PersonName, b.Attribute, b.Age
 FROM SearchedPeople a
 LEFT JOIN People b ON "%"&a.SearchedName&"%" like b.PersonName 

1 个答案:

答案 0 :(得分:4)

它会返回三个空行,因为您没有表a(SearchedPeople)中的任何列,而LEFT JOIN没有产生匹配。

原因是您的条件是在错误的顺序中搜索PersonName字符串%Searchedname%,您需要切换它。 Access也不像那样喜欢wilcard的 asteriks * ,除非您对MS-Access的查询或配置进行一些更改,请参阅下面的评论Parafait。

我刚试过这个:

 SELECT a.SearchedName
       ,b.PersonName, b.Attribute, b.Age
 FROM
      SearchedPeople a
       LEFT JOIN People b
       ON  b.PersonName  LIKE ("*" &  a.SearchedName & "*")

编辑:

好女士从@Parafait的评论中获取特定信息,以便在每次删除评论的情况下粘贴答案。

使用ALIKE和百分数工作。如果OP通过OLEDB而不是GUI .exe程序连接到MS Access,则编码SQL中的LIKE语句需要%运算符。 OP还可以将数据库设置更改为ANSI-92模式,以始终使用%通配符。