2016-09-07 3 views
1

私はいくつかのテキスト列を含むテーブルを持っており、検索タームを使用してテーブルをクエリできる必要があります。単一用語については、これは@searchTermsがあり、何かのような...複数の入力に対するSQLクエリ

SELECT * FROM things WHERE @searchTerms in (column1, column2...columnX) 

...時々私は、単一のクエリで複数の用語を超える検索する必要がある、しかし...

SELECT * FROM things WHERE @searchTerm in (column1, column2...columnX) 

簡単です単一の値ではなく、値の集合。 SQLでこの動作をエミュレートする方法はありますか?

更新: @Tedo G.ありがとうございます。残念ながら、別の用語の間にANDを使用するクエリが必要です。私は結果のグループにあなたの変更を追加したことを行うと、明確な結果あたりのカウントは項の数と一致することを確認...

SELECT 
    * 
FROM 
    things AS A INNER JOIN @searchTerms AS B 
      ON B.[FieldName] IN (column1, column2...columnX) 
    GROUP BY column1, column2...columnX 
    HAVING count(column1) = @numberOfSearchTerms 

...これは動作しますが、より良い方法はありますか?

+1

あなたはおそらく、あなたがしているデータベースのフルテキスト検索機能になりますを使用して。 –

+0

これはおそらく私がやろうとしていることですが、可能であれば全文検索を使わないで行う方法があるかどうかを知りたいのです – GoatInTheMachine

+1

@searchTermsの値をテンポラリテーブルに入れますか? – jarlh

答えて

2

これを達成するためのもう一つの方法は、テーブル変数を作成し、検索語の値でそれを埋める、それに参加することである。

SELECT 
    * 
FROM 
    things AS A INNER JOIN @searchTerms AS B 
      ON B.[FieldName] IN (column1, column2...columnX) 
+0

ありがとうございました!これはうまくいきますが、「OR」ではなく「AND」を使用するクエリが必要です。質問を更新しました – GoatInTheMachine

関連する問題