SQL、ASP.NET、およびクエリ文字列パラメーターを使用して、簡単なテーブル フィルター処理を実行しようとしています。「検索」テキスト フィールドと「価格」テキスト フィールドを含むフォームが存在するようにプロジェクトをセットアップしました。フォームを送信すると、次のようにクエリ文字列パラメーターが更新されます。
mydomain.com?search=test&price=100
SQL ステートメントは検索条件を満たす行を返す必要がありますが、一方が空白の場合でも、もう一方はデータを返す必要があります。現在、'search' と 'price' の両方が有効な場合は正しい行が返されますが、どちらかが空の場合は何も返されません。
ここに私のコードスニペットがあります:
var search = Request["search"].IsEmpty() ? "" : Request["search"];
var price = Request["price"].IsEmpty() ? "" : Request["price"];
string sql = "SELECT * FROM Items WHERE ('%" + search + "%' is null OR item_name LIKE '%" + search + "%') AND ('%" + price + "%' is null OR item_price < " + price + ")";
「値が null である」ステートメントが true の場合、() 内の「AND」ステートメント全体が null に設定されているため、無視されることを理解しています。false の場合、'OR..' ステートメントが実行されます。
SQL ステートメントが正常に機能しないのはなぜですか?