私はそれを行う方法がわからないことを達成しようとしています。ASP Classic と SQL 2008、IIS7 に基づく Web サイトに取り組んでいます。検索ページには、 のようなクエリごとにいくつかの値を設定するオプションがありますdefault.asp?q=one|two|three&q2=four|five|six
。
私がやろうとしているのは、クエリに値がない場合にワイルドカードを使用し、クエリにカップルの値がある場合に、1 つの列でカップルの単語を同時に検索できるようにすることです。これが私がやりたいことです:
- クエリに値がある場合は、データベースでうまくいきます(これは非常に簡単です)
- クエリに「|」で区切られたカップル値がある場合 署名してから分割し、それらすべてを検索します。
- クエリに値がまったくない場合は、ワイルドカードを使用し、何も検索しないでください。
これを達成するために、いくつかのことを試しましたが、成功しませんでした。これが私のコードの例です。
1 - - - - - -
@style nVarchar(150) = ''
Select * FROM mytable WHERE CONTAINS(style, @style) AND ...
CONTAINS から最良の結果を得るためにクエリを分割することはできますが'"* value1 *" OR "* value2 *"'
、「スタイル」に値がある場合、これは機能します。スタイルに値がない場合、ワイルドカードがないため、データベースをフィルタリングせずにすべてのデータを取得できます。
二 - - - - - - - -
@style nVarchar(150) = ''
Select * FROM mytable WHERE style LIKE '%' + @style + '%' AND ...
LIKE 句を使用すると'%'
、スタイルに値がない場合のようにワイルドカードを使用できますが、同じ列でカップルの値を検索することはできません。
したがって、これはちょっと複雑で、いくつかの場所で使用する必要があるため、「ストアド プロシージャ」を使用していることを覚えておいてください。この検索には 10 ~ 12 個のクエリがあります。
どんなアイデアでも、これを実現するのに役立ちます。