我想用 NOT 运算符搜索我的全文索引。
SELECT * FROM CONTAINSTABLE(MY_TABLE, *, 'NOT name'),
以下例外:
Msg 7630, Level 15, State 3, Line 1
Syntax error near 'name' in the full-text search condition 'NOT name'.
有什么问题?如何仅使用NOT 运算符搜索我的全文索引?
谢谢
我想用 NOT 运算符搜索我的全文索引。
SELECT * FROM CONTAINSTABLE(MY_TABLE, *, 'NOT name'),
以下例外:
Msg 7630, Level 15, State 3, Line 1
Syntax error near 'name' in the full-text search condition 'NOT name'.
有什么问题?如何仅使用NOT 运算符搜索我的全文索引?
谢谢
而不是 not,您可以使用 not contains :
SELECT * FROM MY_TABLE
where not contains( *, 'name')
以供参考 :
http://blog.sqlauthority.com/2008/09/05/sql-server-creating-full-text-catalog-and-index/
我是全文搜索的新手,但根据文档:
NOT 只能出现在 AND 之后,如 AND NOT。不允许使用 OR NOT 运算符。NOT不能在第一个术语之前指定。
所以在你的情况下,CONTAINSTABLE(MY_TABLE, *, 'NOT name')
被认为是无效的。我发现将NOT
运算符与 CONTAINSTABLE 一起使用的唯一方法如下:
SELECT *
FROM CONTAINSTABLE({table_name}, *, N'{another_condition} AND NOT name')
@NG 提交的语法。当您不需要RANK
信息时工作正常,但只要您想要它,您似乎需要在NOT
运算符之前添加另一个(虚拟)条件(这会很混乱......如果可以的话,不要使用虚拟条件躲开它)。
注意:在我看来,当您的论点是要获得排名结果时,在 CONTAINSTABLE 中只有一个NOT
运算符的概念并没有真正意义。实际上,如果允许这样做,所有匹配结果将共享相同的排名值(因为它们不包含排除的标记)。这RANK
将成为不相关的信息,CONTAINS
可以使用简单的信息CONTAINSTABLE
(参见@NG。答案)。