抱歉帖子标题不好,但我无法更好地总结这一点。
最好举个例子。假设我有一个包含两个文本列的简单表格(我将其他列排除在外)。
Id Text_1 Text_2
1 a a b
2 c a b
现在,如果我想搜索“a”而不是“b”,在我当前的实现中,我将返回记录 1。我明白为什么会这样,这是因为搜索条件是“Text_1”列的匹配项,而对于记录 2,它不是任何列的匹配项。
但是,对于最终用户来说,这可能并不直观,因为他们可能意味着在大多数情况下也要排除记录 1。
所以我的问题是,如果我想告诉 SQL Server“跨所有列”进行匹配(这意味着如果在任何列上找到“NOT”部分,则记录不应该匹配),这可能吗?
编辑:这就是我的查询对于这个例子的样子:
SELECT Id, TextHits.RANK Rank, Text_1, Text_2 FROM simple_table
JOIN CONTAINSTABLE(simple_table, (Text_1, Text_2), '"a" and not "b"') TextHits
ON TextHits.[KEY] = simple_table.Id
ORDER BY Rank DESC
实际的查询有点复杂(更多的列,更多的连接等),但这是一般的想法:)
谢谢!