你可以在 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