我有一个包含 200 条记录的表,其中 10 条记录的文本包含单词“TAX”。
当我执行时
Select * from tbl1 WHERE [TextCol] LIKE '%TAX%'
然后我正确地得到了包含这 10 条记录的结果集。
但是当我尝试通过
排除这些记录时Select * from tbl1 WHERE [TextCol] NOT LIKE '%TAX%'
它只返回 100 条记录,而不是 190 条。
最佳答案
这会返回正确的结果吗?
Select * from tbl1 WHERE COALESCE([TextCol],'-1') NOT LIKE '%TAX%'
我相信 NULL
值是这里的问题,如果列包含它们,则 NULL NOT LIKE '%TAX%'
将返回 UNKNOWN/NULL
因此不会被选中。
我建议您阅读handling with NULL
values ,或here .
正如 @ughai 所建议的,如果性能是一个问题,你也可以使用:
Select * from tbl1
WHERE [TextCol] NOT LIKE '%TAX%'
OR [TextCol] IS NULL
关于sql - NOT LIKE 和 LIKE 不返回相反的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40376260/