2

stored procedureのような製品コードを受け入れる があります1234567890。これらの製品のワイルドカード検索オプションを促進したいと考えています。(すなわち123456*) 一致するすべての製品を返すようにします。これを行う最善の方法は何ですか?

私は過去に以下のようなものを使用しました:

SELECT @product_code = REPLACE(@product_code, '*', '%')

LIKEフィールドで検索しますproduct_codeが、改善できると思います。

4

2 に答える 2

1

あなたがすでにしていることは、あなたができる最善のことです。

試行できる最適化の 1 つは、これを許可している列にインデックスがあることを確認することです。SQL Server は引き続きワイルドカード検索のフル スキャンを実行する必要がありますが、それはテーブル全体ではなく特定のインデックスに対してのみ行われます。

いつものように、変更の前後にクエリ プランを確認することをお勧めします。

于 2008-11-26T16:10:40.203 に答える
0

いくつかのランダムなアイデア

場合によって異なりますが、次のことを検討してください。

  • デフォルトでは、常に部分文字列を探します。たとえば、ユーザーが「1234」と入力した場合、次のように検索します。

    「%1234%」のような WHERE 製品

  • ユーザーにフル コントロールを許可します。つまり、単純に入力を受け取り、それをLIKE句に渡します。これは、独自のカスタム検索を思いつくことができることを意味します。これは、ユーザーが学習に関心がある場合にのみ役立ちます。

    @input のような WHERE 製品

于 2008-11-26T17:04:02.090 に答える