【问题标题】:SQL query combination of like and in? [duplicate]like和in的SQL查询组合? [复制]
【发布时间】:2015-12-06 17:33:56
【问题描述】:
a. Select * from tableA where columnA like '%complete%';
b. Select * from tableA where columnA in ('complete','request');

A 列的可能值是complete、completed、request、request.......

我的目标是查询那些值complete, completed, request, requested

通常我们会写查询where columnA in ('complete','completed','request','requested');

有没有办法编写更短的查询,例如 Select * from tableA where columnA in like (%complete%, %request%)

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    你需要使用多个OR

    select * 
    from tableA 
    where columnA like '%complete%'
       or columnA like '%requested%'
       or ...
    

    使用连接:

    SELECT *
    FROM tableA t
    JOIN VALUES (('%complete%'), ('%requested%'), ...) v(c)
      ON t.columnA LIKE v.c
    

    请注意,搜索模式 %phrase% 不支持 SARG,查询优化器不会在该列上使用索引(如果存在)。

    您应该考虑使用Full-Text Search

    【讨论】:

      【解决方案2】:

      您可以尝试像这样使用 CONTAINS:

      select * from tableA
      WHERE CONTAINS(columnA, '"complete*" OR "requested*" OR ...')
      

      【讨论】:

      • CONTAINS 只能应用于全文索引列
      猜你喜欢
      • 2010-09-20
      • 2010-12-24
      • 2011-03-02
      • 1970-01-01
      • 2013-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      相关资源
      最近更新 更多