我惊讶地发现既不CONTAINS
或CONTAINSTABLE
似乎不支持如下语法,您在其中为最后一个搜索条件参数传递列名。
SELECT *
FROM dbo.Articles AS a
WHERE EXISTS
(
SELECT *
FROM dbo.Terms AS t
INNER JOIN CONTAINSTABLE(dbo.Articles, (ArticleBody), t.FulltextTerm)
AS ct ON ct.[Key] = a.ArticleId
)
上述查询返回“'t' 附近的语法不正确”错误消息。
该Terms
表包含多行和一FulltextTerm
列,如果这些FulltextTerm
值中的任何一个在 ArticleBody 中,它应该是匹配的,以便选择特定的文章。这就是我想要达到的目标。
CONTAINS
并且CONTAINSTABLE
似乎只支持搜索条件参数的字符串文字或变量,这是非常有限的。如果这是唯一的选择,它需要更多的代码,如果我需要Terms
使用游标或循环遍历表,它肯定会慢得多。
我是否在这里遗漏了一个技巧,或者有人可以建议的任何解决方法 - 最好是基于集合的解决方案,即避免循环。