你可以在 SQL 中使用 DOES NOT CONTAIN 来代替 not like 吗?

Posted

技术标签:

【中文标题】你可以在 SQL 中使用 DOES NOT CONTAIN 来代替 not like 吗?【英文标题】:Can you use DOES NOT CONTAIN in SQL to replace 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 和至少另一个*** answer 上得到证实 【参考方案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%')

【讨论】:

以上是关于你可以在 SQL 中使用 DOES NOT CONTAIN 来代替 not like 吗?的主要内容,如果未能解决你的问题,请参考以下文章

ORA-00942: table or view does not exist

Result Maps collection does not contain value for...

Navicat连接Mysql报错:Client does not support authentication protocol requested by server;

mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法

sql错误;The user specified as a definer ('tester'@'%') does not exist

What does a (+) sign mean in an Oracle SQL WHERE clause?