【问题标题】:Multiple condition based on where clause in sql server 2008sql server 2008中基于where子句的多个条件
【发布时间】:2013-03-25 23:15:59
【问题描述】:

我有一张表Product 有这些列

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

我想用这些条件搜索所有这些字段

  • SearchType='包含'
  • SearchType='Ends'
  • SearchType='Equals'
  • SearchType='更大'
  • SearchType='Less'
  • 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子句的逻辑吗

【问题讨论】:

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


    【解决方案1】:

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

    WHERE whereClause1 AND/OR whereClause2 AND/OR whereClause3...等

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

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

    【讨论】:

      【解决方案2】:

      如果我的问题是正确的,我想你想结合条件然后使用 OR

       WHERE ((ProductName = @ProductName) AND (Country Like @Country +%)) OR
             ^(Extra Brackets to combine) 
            ((ManufacturerLikre(Ends) '%' + @Manufacturer ) AND (Length < (Greater) @Length))
            ^(Extra Brackets to combine)
      

      【讨论】:

        猜你喜欢
        • 2019-12-18
        • 1970-01-01
        • 2015-11-21
        • 1970-01-01
        • 2012-08-31
        • 1970-01-01
        • 2013-09-08
        • 1970-01-01
        • 2017-06-11
        相关资源
        最近更新 更多