【发布时间】:2017-03-15 13:08:54
【问题描述】:
我有一个包含 200 条记录的表,其中 10 条记录的文本包含“TAX”一词。
当我执行时
Select * from tbl1 WHERE [TextCol] LIKE '%TAX%'
然后我正确地得到了包含这 10 条记录的结果集。
但是当我试图排除这些记录时
Select * from tbl1 WHERE [TextCol] NOT LIKE '%TAX%'
它只返回 100 条记录,而不是 190 条。
【问题讨论】:
-
该列是否有
null值? -
是的,该列中有空值
-
尽可能避免在搜索字符串的开头使用
%。它很重。 -
@MoslemBenDhaou 有一些方法可以优化中缀查询。我相信 SQL Server 中的主要方法是全文搜索机制,但我可能不知道更好的选择。在 PostgreSQL 中,您可以使用三元组索引来提高它们的效率。但是,对于 200 行的表,它可能甚至不值得索引。
-
什么? MySQL 是否符合“青少年词汇”标准?
标签: sql sql-server tsql sql-like