繁体   English   中英

基于SQL Server 2008中where子句的多重条件

[英]Multiple condition based on where clause in sql server 2008

我有一个带有这些列的表格Product

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

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

  • SearchType ='包含'
  • SearchType ='结束'
  • SearchType ='等于'
  • SearchType ='Greater'
  • 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子句的逻辑吗

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

在哪里whereClause1 AND / OR whereClause2 AND / OR whereClause3 ... etc

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

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

如果我的问题正确,我认为您想合并条件然后使用OR

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM