【问题标题】:MS Access SQL - How to search multiple fields with one LIKE operatorMS Access SQL - 如何使用一个 LIKE 运算符搜索多个字段
【发布时间】:2017-08-16 14:15:11
【问题描述】:

我在 MS Access VBA 中有一个查询

Dim search As String

"SELECT Identifier
FROM tblProjects
WHERE Identifier 
LIKE '*" & search & "*' " & _
"OR Title LIKE '*" & search & "*' " & _
"OR Regions LIKE '*" & search & "*' " & _
"OR ProjectDate LIKE '*" & search & "*' " & _
(etc)

有没有办法缩短这个查询以便它使用一个 LIKE 运算符?如果它们包含搜索值,我几乎想搜索每一列。请记住,这是使用 MS Access 数据库。

【问题讨论】:

  • 您可以将所有文本字段选择到临时结果中的串联字段中,然后在临时结果集上执行LIKE
  • 连接值(标识符 & 标题 & 区域 &projectDate...),例如 'search' 但这可能会更慢;
  • [ABC]+[XYZ] 将匹配 *CX* 不作为一个谨慎的值存在,您需要填充分隔符来修复与一个很好的可优化 OR 系列相比非常可怕的问题。
  • 您可以添加一个查找字段,并查看使用数据宏将连接值添加到该字段,更新/删除等,因为这可能会使查询更快一些,因为您可以添加索引到场。我赞成单独的 OR 方法。

标签: sql database vba ms-access


【解决方案1】:

这样的事情可以工作,但我个人不明白为什么你不能拥有现有的析取逻辑......它更有意义。

SELECT Identifier
FROM tblProjects
WHERE (Identifier + '|' + Title + '|' + Regions + '|' + ...) 
    LIKE '*search_text*'

【讨论】:

    【解决方案2】:

    像这样的东西,可能有效,但我支持 OR,但它是水平的。

    select q1.id,t2.id from
    (select t1.id,t1.value1 from table1 as t1 where t1.[Title]='a') as q1
    left join table1 as t2 on t2.[Regions]=q1.[Title]
    

    【讨论】:

      猜你喜欢
      • 2015-07-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 2018-10-12
      • 2018-11-03
      • 2011-07-08
      相关资源
      最近更新 更多