关于多重条件的搜索查询(sql server+c#)

昨天碰到一个多条件查询的问题,一共是10几个条件多重查询,关键问题是,他是用户在页面上选择或者填写搜索条件,所以存在有的条件为空值的情况,注意哦这边的空值不是Null哦而是一个空string值,因为限制条件太多了,无法进行一一的进行if的比较,后来我想到了一个比较变态的方法,其实很多刚接触到网络的人应该知道‘注入’这个词,最简单的就是在登录的地方骗取登录,让name=name恒为真这样的方法,根据这个我想到了一个简单的多重条件搜索查询的方法,举个例子来说明吧:文章表artcle内有标题title,内容content,作者man,所属部门(depart),登记时间(djtime)等等,在页面上提供给用户进行查询操作的是标题文本框@title,作者文本框@man,距离现在的时间文本框@zjsj,所属部门的下拉框(默认是value="-1" text="请选择")获取value值@depart,因为客户并不会把所有的都填满然后进行查询,或许他也只知道其中的某几个条件,所以进行搜索的操作提交的时候获取到的并不全,我们按照提交的内容做了如下的处理:
1 select   *   from  article 
2 where
3 (title  like   ' %@title% '   or   @title = ''
4 and  
5 (man = @man   or   @man = '' )
6 and
7 ( datediff ( day ,djtime,getdate()) < @zjsj   or   @zjsj != 0
8 and
9 (depart = @depart   or   @depart = '' )
解释一下模糊查询标题,对应作者,距离@zjsj以内的所有文章,还有对应部门,每一个都可以缺省,比一个一个得去判断简单多了,
还有一个就是有可能是null值的,那我们就用 is null来判断就可以了,原理都是一样的!
共勉!

转载于:https://www.cnblogs.com/biandande/archive/2008/03/31/1131274.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值