我希望这是一个简单的,我只是找不到如何获得我想要的结果,也许我在SQL中使用了错误的关键字?
我正在搜索包含全名字段的员工表,此字段可以是“Sam”或“Mr Evans”或“Mr Sam Evans”
我试图找到与另一个Names表的部分匹配,其中包含一个Name字段 - 这通常是一个简短的名称,如“Sam”或“Evans”,但可能是“Sam Evans”
我尝试过,有和没有*如下
SELECT tblEmployee.FullName, tblNames.Name
FROM tblEmployee, tblNames
WHERE tblEmployee.FullName Like "*" & tblNames.Name & "*"
以及我想要的结果,此查询可以返回我不想要的“Mr. Samson”的Employee FullName。我只想看到结果包含完整的单词“Sam”而不是FullNames和Sam在字符串中的一部分单词。所以我想看看Sam Evans先生和Sam Smith先生以及Sally Evans女士等。
我希望这是有道理的。非常感谢您的帮助
我已经解决了这个问题 - 只是发布以防万一有类似问题的人。
WHERE " " & tblEmployee.FullName & " " Like "* " & tblNames.Name & " *"
所以基本上通过在Employee Full Name的开头和结尾添加一个空格,我会捕获所有正确的记录。我没有意识到你可以填写这样的领域,但一位同事给我打了电话!
答案 0 :(得分:3)
SQL和访问中的通配符是%
符号;
所以
"SELECT tblEmployee.FullName, tblNames.Name FROM tblEmployee, tblNames
WHERE tblEmployee.FullName Like '%" & tblNames.Name & "%'"
将匹配字符串tblNames.Name
您只能在开头或结尾使用%
来分别获得字符串/字符串结尾的匹配。
修改强> 的
道歉,您可以在访问中使用*
和?
,但是您是否将查询作为字符串发送到某些VBA代码?或者试图直接运行它?直接在查询中,它将无法将tblNames.Name
字符串解析为查询,您需要从表单或其他代码中传递它。
根据评论进行修改
要选择一个特定单词,只需要一些解决方法:
SELECT * FROM table WHERE field LIKE '* myWord *' OR field LIKE '* myWord.*'
您可以选择开始发送“LIKE”MyWord *' 并用逗号,fullstops,exclamtion标记等词......
您可以执行IN语句并在查找表中包含所有变体,以便将其作为另一个选项轻松维护。
答案 1 :(得分:1)
我使用了Access 2007中编辑过的帖子中的这个解决方案,它完美无缺!
WHERE " " & tblEmployee.FullName & " " Like "* " & tblNames.Name & " *"
现在我的问题是,SQL代码在做什么,为什么它有效?有人可以分解吗?
<强>编辑:强>
好吧,我的混淆源于Access SQL中的字符与更标准的SQL的不同使用。 &安培;在Access中连接,而+在标准SQL中连接。 *是Access中任意数量字符的通配符,而SQL是%。