2011-10-25 7 views
0

私たちのようなものに見えるかもしれませんデータがあります。我々は、すべてのを見つけたいのですがどこでつの方法は、使用して複数のテキストが続くハイフンに続く単一の文字を検索するためのSQL Serverのフルテキスト検索

A-10001 
A-10002 
A-10003 
B-10001 
B-10002 
B-10003 

をマッチは "A-100"を含む。境界を壊す単語とみなされ、Aが(それは単一の文字なので)ノイズワードであるので、クエリは返しません - 「」ので、しかし

where contains(e.*, '"A-100*"') 

:フルテキスト検索を使用して、我々のような何かをやっています任意の結果。期待される結果を返す方法があれば疑問です。

注、私はこの単純化されたシナリオでは、私が代わりに含まれているように使用できることを理解し、何かのように:

where 
    (e.myColumn1 like '%A-100%' 
    or e.myColumn2 like '%A-100%' 
    or e.myColumn3 like '%A-100%', 
    etc) 

しかし、仕事に行くのではありません私の状況について(主にパフォーマンス上の理由から、そこにあるので、私が見る必要があるたくさんの列)。

私も、私は2つの単語に検索文字列を破る可能性が理解し、ような何か:

where 
    contains(e.*, '"100*"') 
    and (e.myColumn1 like '%A-100%' 
     or e.myColumn2 like '%A-100%' 
     or e.myColumn3 like '%A-100%', 
     etc) 

をしかし列がたくさんあるので、再び、これは理想的なソリューションではありません。

私はSQL Server 2005以降のソリューションに興味がありますが、SQL Server 2008固有の解決策がある場合は、それも興味があります。任意の助け

おかげで、 エリック

答えて

1

は、私はあなたがこのために非常にきれいな解決策を見つけるつもりだとは思いません。私は問題を単純すぎるかもしれませんが、私のアドバイスは最初の2文字の導出列です。優先度が読み取りパフォーマンスの場合、非クラスタ化を計算列に置き、完全列を含めます。これにより、 'A-'の検索が可能になりますが、好きなのは常に検索が必要です。評価する列が複数ある場合でも、各列の同様の述部よりも優れたパフォーマンスを発揮します。

関連する問題