0

Productこれらの列を持つテーブルがありました

ProductName,
Description,
Manufacturer,
Product Code,
Technology,
Address,
Country,
City,
Length 

これらの条件でこれらすべてのフィールドを検索したい

  • SearchType='含む'
  • SearchType='終わり'
  • SearchType='等しい'
  • SearchType='グレーター'
  • SearchType='少ない'
  • SearchType='等しくない'
  • SearchType='いいね'

AND/OR演算を使用するかどうかを渡す別のパラメーター

任意の検索条件と AND\OR 演算を使用して、一度に 6 列を検索できます。

where句の条件は次のようになります

WHERE (ProductName = @ProductName) AND (Country Like @Country +%) OR
      (ManufacturerLikre(Ends) '%' + @Manufacturer ) AND (Length < (Greater) @Length)

したがって、ユーザーは上記の基準に基づいて 6 つの条件を入力できます。

where句のロジックを理解するのを手伝ってもらえますか

4

2 に答える 2

0

質問が正しければ、条件を組み合わせてから使用する必要があると思いますOR

 WHERE ((ProductName = @ProductName) AND (Country Like @Country +%)) OR
       ^(Extra Brackets to combine) 
      ((ManufacturerLikre(Ends) '%' + @Manufacturer ) AND (Length < (Greater) @Length))
      ^(Extra Brackets to combine)
于 2013-03-25T15:15:59.570 に答える
0

おそらく最も簡単な解決策は、次の形式を使用してフロント エンド コードで動的にビルドすることです。

WHERE whereClause1 AND/OR whereClause2 AND/OR whereClause3...など

whereClause1 などを関連する SQL 構文と各 AND/OR に置き換えます。考えられるすべての AND/OR の組み合わせに対処するには、where 句を括弧でグループ化する方法を提供する必要があります。そうしないと、可能な組み合わせの範囲が制限され、ユーザー user が AND および OR 演算子の優先順位を理解していることが前提になります。

また、ユーザー入力からクエリを作成する場合、SQL インジェクション攻撃の可能性に注意する必要があります。

于 2013-03-25T14:30:50.360 に答える