2016-07-28 54 views
0

我有一個名爲'name'的FULLTEXT列,它可能每行包含多個字。使用CONTAINS,我可以搜索可變數量的單詞,並且它可以工作,除非其中一個單詞與其中有&符。MS SQL含有&符號搜索

示例:name = '鮑勃·布朗AB & CD' 這工作:

CONTAINS(name, '"*Bo*" AND "*Br*"') 

這些不(與符號的任何搜索詞的):

CONTAINS(name, '"*AB*"') 
CONTAINS(name,'"*AB&CD*"') 
CONTAINS(name,'"*&*"') 

我明白爲什麼最後一次搜索不起作用,因爲CONTAINS只從單詞開始搜索。

是否正在使用FULLTEXT處理&符號作爲分詞符?如果是這樣,這可能解釋爲什麼包括&符號的搜索會失敗。但它不能解釋爲什麼

CONTAINS(name, '"*AB*"') 
CONTAINS(name, '"*CD*"') (assuming FULLTEXT sees "CD" as a different word) 

會失敗。

如何搜索「AB & CD」或只是「AB」或「CD」,如何緩解搜索,以便返回該行?

P.S.動態SQL不是一個選項,所以我不能連接可變數量的LIKE。

回答

0

顯然,我找到了我的答案。我在我的FULLTEXT索引設置

STOPLIST = OFF 

,我現在可以通過 「AB」 和 「AB & CD」 成功地搜索。