2016-07-28 8 views
0

「名前」というFULLTEXT列がありますが、これには行ごとに複数の単語が含まれることがあります。 CONTAINSを使って、可変数の単語を検索することができます。単語の中にアンパサンドがある場合を除いて動作します。MS SQLにはアンパサンド検索が含まれています

例:名= 'ボブ・ブラウン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" に成功して検索することができます。

関連する問題