查找包含所有单词的行

时间:2016-05-08 17:46:39

标签: sql sql-server

我的应用程序是在vb.net中构建的,SQL Server Compact作为数据库,所以我无法使用全文索引。

这是我的数据......

MainTable field1

  1. A B C
  2. B G C
  3. X Y Z
  4. C P B
  5. 搜索词= B C

    预期结果 =搜索字词的任意组合=第1,2,4行

    以下是我目前正在做的事情......

    我正在将搜索字词B C置换为包含%B%C%%C%B%的数组,并将这些值插入tempTable的字段1中。

    所以我的SQL看起来像这样:

    SELECT * FROM MainTable INNER JOIN tempTable ON MainTable.field1 LIKE tempTable.field1

    在这个简单的例子中,它确实正确地返回了预期的结果。但是,我的搜索字词可以包含更多值。例如,6个搜索词B C D E F G在置换时具有720个不同的值,并且当使用更多搜索词时,排列会呈指数级增长...这并不好。

    有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

以下内容适用于您的示例:

Select * from table where field1 like '%[BC]%'

但它也会返回仅包含" B"或" C"。您是否需要任何顺序或一个或多个字符?

编辑:然后以下内容可行:

Select * from test_data where col1 LIKE '%Apple%' and col1 like '%Dog%'

请参阅此处的演示:http://rextester.com/edit/LNDQ49764