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