我如何使用通配符将以下表格联接在一起?我想从People表中获取所有不同的行,该表包含SearchedPeople表中的SearchedName。
搜索到的人:
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
它返回三个空行,因为您没有表a(SearchedPeople
)中的任何列,并且LEFT JOIN
没有产生匹配项。
原因是您的条件以错误的顺序搜索PersonName
,因此%Searchedname%
您需要在字符串中进行切换。另外,除非您对MS-Access的查询或配置进行了一些更改,否则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连接到MS Access,而不是通过GUI .exe程序连接到MS Access,则对于编码SQL中的LIKE语句,%操作符是必需的。OP还可以将数据库设置更改为ANSI-92模式,以始终使用%通配符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句