如何使用通配符加入以下表格?我想从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
答案 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模式,以始终使用%通配符。