SQLServer 存储过程中不拼接SQL字符串实现多条件查询

转载 2016年05月31日 15:59:08

最近在工作中要使用存储过程,因为前端页面传过来的下拉菜单的值不固定,数据是这样的,0是全部,1是男,2是女,当选择全部时,要能查询出所有的用户,否则只能查询出来男的用户或者女的用户,一般都是在存储过程中写

declare @sql nvarchar(500), @str nvarchar(20)

set @str = 'and sex = 1'

set @sql = 'select * from 表 where id >0 '+ @str

exec sp_executesql @sql  或者 exec(@sql)

后来看了一篇博客发现还有另一种写法

下面是 不采用拼接SQL字符串实现多条件查询的解决方案
  第一种写法是 感觉代码有些冗余
  if (@addDate is not null) and (@name <> '') 
   select * from table where addDate = @addDate and name = @name 
  else if (@addDate is not null) and (@name ='') 
   select * from table where addDate = @addDate 
  else if(@addDate is null) and (@name <> '') 
   select * from table where and name = @name 
  else if(@addDate is null) and (@name = '') 
  select * from table 
  第二种写法是 
  select * from table where (addDate = @addDate or @addDate is null) and (name = @name or @name = '')
  第三种写法是 
  SELECT * FROM table where 
  addDate = CASE @addDate IS NULL THEN addDate ELSE @addDate END, 
  name = CASE @name WHEN '' THEN name ELSE @name END


引用博客地址:http://uule.iteye.com/blog/1988137


相关文章推荐

使用MVC,实现多条件查询,排序与分页 的 存储过程

ViewModel:  #region 交易信息列表     public class ProjectInfoList     {         //...

repeater插入,多选删除,条件查询实例(存储过程实现)

前台:基本实现页面,全选js等                     function Check() {  ...

万能分页存储过程(带第一页性能优化,任意条件查询,任意字段排序)

set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO /* 分页排序存储过程 V1.0 */ create procedure [...

SqlServer分页存储过程(多表查询,多条件排序),Repeater控件呈现数据以及分页

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如...

解决存储过程中SQL字符串语句执行引入参数的问题

最近在写存储过程的时候,发现一个问题,是关于存储过程中字符串SQL中引入参数的问题。 且看下例: declare @count int select @count=count(*) from ...

sql存储过程中分隔字符串

sql存储过程中分隔字符串

sqlserver存储过程中利用游标遍历结果集简单示例及查询数据库时间

本实例用的是sqlserver2005   在存储过程中遍历结果,和查询数据库中所有 存储过程名称 加以处理以文本形式输出 源码: drop procedure findName creat...
  • NN955
  • NN955
  • 2012-09-27 14:47
  • 14697

sql多条件存储过程

  • 2010-12-05 11:43
  • 921B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)