关闭

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

标签: sql server
527人阅读 评论(0) 收藏 举报
分类:

最近在工作中要使用存储过程,因为前端页面传过来的下拉菜单的值不固定,数据是这样的,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


0
0

猜你在找
【直播】计算机视觉原理及实战—屈教授
【套餐】深度学习入门视频课程—唐宇迪
【套餐】Hadoop生态系统零基础入门--侯勇蛟
【套餐】嵌入式Linux C编程基础--朱有鹏
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】机器学习之凸优化——马博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:215433次
    • 积分:2259
    • 等级:
    • 排名:第16654名
    • 原创:80篇
    • 转载:21篇
    • 译文:0篇
    • 评论:29条
    最新评论