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...等

用相关的 sql 语法和每个 AND/OR 替换 whereClause1 等。为了处理所有可能的 AND/OR 组合,您需要提供一种用括号对 where 子句进行分组的方法,否则它会限制可能的组合范围,并且还假设用户用户理解 AND 和 OR 运算符的优先级。

此外,在从用户输入构建查询时,您需要注意可能的 SQL 注入攻击。

于 2013-03-25T14:30:50.360 回答