基于sql server 2008中where子句的多个条件

时间:2013-03-25 13:47:32

标签: sql sql-server-2008 where-clause

我有一个包含这些列的表Product

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

我想用这些标准搜索所有这些字段

  • SearchType ='包含'
  • SearchType ='结束'
  • SearchType ='Equals'
  • 检索类别= '大'
  • SearchType ='Less'
  • SearchType ='Not Equal'
  • 检索类别= '喜欢'

我将传递的另一个参数是否使用AND / OR操作

我们可以使用任何搜索条件和AND \ OR操作

搜索6列

where子句中的条件将是这样的

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

因此用户可以根据上述标准输入6个条件。

你能帮忙获得where子句

的逻辑吗?

2 个答案:

答案 0 :(得分:0)

也许最简单的解决方案是使用以下格式在前端代码中动态构建它:

where whereClause1 AND / OR whereClause2 AND / OR whereClause3 ... etc

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

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

答案 1 :(得分: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)