sql - Access 2010 SQL Query 仅在完整单词的字符串中查找部分匹配

标签 sql ms-access ms-access-2010

我希望这是一个简单的,我只是找不到如何得到我想要的结果,也许我在 SQL 中使用了错误的关键字?

我正在搜索包含全名字段的员工表,该字段可以是“Sam”或“Mr Evans”或“Mr Sam Evans”

我试图找到与另一个包含 Name 字段的 Names 表的部分匹配 - 这通常是一个短名称,例如“Sam”或“Evans”,但也可能是“Sam Evans”

我试过,有和没有 * 如下

SELECT tblEmployee.FullName, tblNames.Name
FROM tblEmployee, tblNames
WHERE tblEmployee.FullName Like "*" & tblNames.Name & "*"

以及我想要的结果,此查询可以返回我不想要的“Samson 先生”的员工全名。我只想看到包含完整单词“Sam”而不是 FullNames 的结果,在字符串中的某个单词的一部分中包含 Sam。所以我想见见 Sam Evans 先生、Sam Smith 先生和 Sally Evans 女士等等。

我希望这是有道理的。非常感谢您的帮助

编辑 - 解决方案

我已经解决了这个问题 - 只是发布以防它可以帮助任何有类似问题的人。
WHERE " " & tblEmployee.FullName & " " Like "* " & tblNames.Name & " *"

所以基本上通过在员工全名的开头和结尾添加一个空格,我可以找到所有正确的记录。我没有意识到你可以在这样的地方铺平,但一位同事向我暗示了!

最佳答案

SQL 和 Access 中的通配符是 %象征;

所以

"SELECT tblEmployee.FullName, tblNames.Name FROM tblEmployee, tblNames
WHERE tblEmployee.FullName Like '%" & tblNames.Name & "%'"

将匹配字符串 tblNames.Name 的任何实例

您可以使用 %在开始或结束时仅分别获得字符串开头/字符串结尾的匹配项。

编辑

抱歉,您可以使用 *?在您期望的 Access 中,但是您是否将查询作为字符串发送到某些 VBA 代码?还是试图直接运行它?直接在查询中,它将无法解析 tblNames.Name字符串到查询中,您需要从表单或其他代码中传递它。

根据评论编辑

要选择一个特定的单词,它只是需要一些解决方法:
SELECT * FROM table WHERE field LIKE '* myWord *' OR field LIKE '* myWord.*'

您可以选择捕获句子的开头`LIKE 'MyWord *'
和带有逗号,句号,感叹号等的单词...

您可以执行 IN 语句并在查找表中包含所有变体,以使其易于维护作为另一种选择。

关于sql - Access 2010 SQL Query 仅在完整单词的字符串中查找部分匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10783094/

相关文章:

MySQL:在另一个内部选择中访问内部选择表别名

SQL如何用单个查询替换同一个表的单个字段中的多个字符

mysql - SQL 选择接收和发送的每个对话的最新消息

mysql - 将 Excel 中的数据替换为 Access 2007

ms-access - 如何计算表中的字段数?

database - 在 Access 2010 数据库中自动执行查询

mysql - 从内部连接中只获取一行

vba - Access vba 等待代码完成(通过 CDO 发送电子邮件)

ms-access - 基于当前字段值的 MS Access 表单组合框行源

sql - sql语句末尾缺少分号访问