全文搜索 - SqlServer 2008 - 删除包含黑名单表中找到的术语的行



我有两个表,一个是字符串列表,另一个包含黑名单单词列表。我希望在第一个表中找到其字符串包含第二个单词的所有行。

使用 like 语句我创建了以下脚本并且它起作用了:
select a.string
from A a
left join BlackList b on a.string like '%' + b.Term + '%'
where b.Term is null

我想使用全文搜索来获得更好的性能。我正在寻找一种方法来做到这一点: select a.string
from A a
left join BlackList b on contains(a.string, b.Term)
where b.Term is null

我在网上的研究发现这是不可能的,他们的另一种方法吗?

您需要逐行运行,因此请尝试交叉应用。No match = CROSS APPLY 查询中没有行,该查询与 LEFT JOIN 相同。为空

select
   a.string
from
   A a
   CROSS APPLY
   (SELECT b.Term FROM BlackList b WHERE contains(a.string, b.Term)) foo

相关内容

最新更新