为什么是;还是不;及;不是";不允许在包含(tsql)中使用?

为什么是;还是不;及;不是";不允许在包含(tsql)中使用?,tsql,full-text-search,contains,full-text-indexing,Tsql,Full Text Search,Contains,Full Text Indexing,我已经搜索了tsql contains不允许“或不”或“不”作为一元运算符的原因 在微软网站上,它只是说“不允许操作员或非操作员” 我可以简单地把一元数不在包含之外就可以做到这一点吗 SELECT * FROM Person WHERE NOT CONTAINS(*, 'Steve') “或不”也一样 像这两个例子中那样进行查询有问题吗 感谢您的帮助Manuel在您的情况下,您有什么具体的理由进行全文搜索吗 在您的示例中,您可能希望将查询简化为以下内容: SELECT * FROM Per

我已经搜索了tsql contains不允许“或不”或“不”作为一元运算符的原因

在微软网站上,它只是说“不允许操作员或非操作员”

我可以简单地把一元数不在包含之外就可以做到这一点吗

SELECT * FROM Person 
WHERE NOT CONTAINS(*, 'Steve')
“或不”也一样

像这两个例子中那样进行查询有问题吗


感谢您的帮助
Manuel

在您的情况下,您有什么具体的理由进行全文搜索吗

在您的示例中,您可能希望将查询简化为以下内容:

SELECT * FROM Person
WHERE FirstName LIKE '%Peter%' OR LastName NOT LIKE '%Smith%'
如果需要使用全文搜索,可以将查询更改为以下内容:

SELECT * FROM Person 
WHERE CONTAINS(FirstName, 'Peter')

EXCEPT

SELECT * FROM Person 
WHERE CONTAINS(LastName, 'Smith')

你的例子应该有用

CONTAINS(Description,'NOT'Mountain')
这样的表达式可能是不允许的,因为它等价于
notcontains(Description,'Mountain')


类似地,
CONTAINS(Description,“'River”或NOT“Mountain””)
等表达式相当于
CONTAINS(Description,'River')或notcontains(Description,'Mountain')

但这比一行“WHERE CONTAINS(FirstName,'Peter')或notcontains(LastName,'Smith'))要麻烦得多我使用全文,因为用户正在搜索我的案例。用户输入类似“Peter OR NOT Smith”的内容,我将其转换为一个查询,据我所知,Contains(*,'Mountain and River')返回的结果与Contains(*,'Mountain')和Contains(*,'River')返回的结果相同,但在执行时并不等价。我指的是逻辑等价,当然,与每个查询的执行方式无关。但在这种简单的情况下,执行时间应该不会有任何差别。
SELECT * FROM Person 
WHERE CONTAINS(FirstName, 'Peter')

EXCEPT

SELECT * FROM Person 
WHERE CONTAINS(LastName, 'Smith')