2014-11-24 31 views
0

我使用包含用于检测是否某些列中包含了一些字,在..用的情况下“和” &“或”结果是假SQL中使用CONTAINS()不工作和&或

SELECT * FROM Products WHERE CONTAINS(Keywords, 'AND') 
SELECT * FROM Products WHERE CONTAINS(Keywords, 'And') 
SELECT * FROM Products WHERE CONTAINS(Keywords, 'and') 

SELECT * FROM Products WHERE CONTAINS(Keywords, 'Or') 
SELECT * FROM Products WHERE CONTAINS(Keywords, 'or') 

如何检测此字:“AND”,“和”,“和”,“或”,“或”是否包含在产品列中?

+0

所以它返回的结果,但不是返回字段与'和'或'或'在他们? – franglais 2014-11-24 16:11:00

+0

@franglais没有返回结果 – Alex 2014-11-24 16:13:04

+0

你真的想要使用全文搜索(CONTAINS是做什么的),或者你的意思是WHERE关键字LIKE'%AND%'? – 2014-11-24 16:13:42

回答

3

问题很可能是停用词表。创建索引时,默认行为是使用系统提供的停用词列表:

STOPLIST [=] {OFF | SYSTEM | stoplist_name}

将全文禁止表与索引关联起来。该索引不是 ,其中包含指定停止列表的任何标记。 如果没有指定STOPLIST ,则SQL Server将系统全文 停止列表与索引关联。

“AND”和“OR”通常在这样的列表中。

创建索引时,可以使用STOPLIST = OFF将其关闭。或者,通过创建您自己的停用词列表(请参阅here)。

+0

除此之外,由于'AND'和'OR'也是搜索条件中的关键字,因此可能需要引用它们:'CONTAINS(关键字)'AND' )'。免责声明:我不知道这是否有必要。 – 2014-11-24 16:17:46

相关问题