【问题标题】:Can you use DOES NOT CONTAIN in SQL to replace not like?你可以在 SQL 中使用 DOES NOT CONTAIN 来代替 not like 吗?
【发布时间】:2013-09-21 01:50:07
【问题描述】:

我有一个名为logs.lognotes 的表格,我想找到一种更快的方法来搜索备注中没有特定单词或短语的客户。我知道我可以用“不喜欢”,但我的问题是,你能不能用DOES NOT CONTAINS 来代替不喜欢,就像你可以使用一样:

SELECT *
  FROM table
 WHERE CONTAINS (column, ‘searchword’)

【问题讨论】:

  • 只用not contains
  • 这只是“不包含”我相信我希望这会有所帮助。
  • 是什么让你觉得它更快?
  • @PM77-1 它更快。 CONTAINS 只能用于带有FULL TEXT INDEX 的列并且可以利用索引,而带有两个通配符运算符的LIKE 不能使用索引。这在MSDN 和至少另一个stackoverflow answer 上得到证实

标签: sql sql-server-2008 full-text-search


【解决方案1】:

是的,您应该能够在任何布尔表达式上使用 NOT,如 SQL Server 文档 here 中所述。而且,它看起来像这样:

SELECT *
  FROM table
 WHERE NOT CONTAINS (column, ‘searchword’)

搜索列中不包含“搜索词”的记录。而且,根据

Performance of like '%Query%' vs full text search CONTAINS query

这种方法应该比使用带有通配符的LIKE 更快。

【讨论】:

    【解决方案2】:

    你也可以简单地使用这个:

    select * from tablename where not(columnname like '%value%')
    

    【讨论】:

      猜你喜欢
      • 2022-12-27
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      • 1970-01-01
      相关资源
      最近更新 更多