当前位置: 代码迷 >> Sql Server >> 求用一个存储过程实现多重查询解决办法
  详细解决方案

求用一个存储过程实现多重查询解决办法

热度:29   发布时间:2016-04-27 16:52:00.0
求用一个存储过程实现多重查询
现在我有一张表其中包括若干列,我在查询中为用户提供多列的选择性查询,比如可以输入姓名,性别,年龄等   而且必须进行判断是否为这些供查询的文本域进行了值的输入.也就是说用户光输入姓名可以进行查询也可以输入姓名和性别进行查询同样也能3个一起查       这样灵活的存储过程应该怎么写呢?
      请高手提点解决方案     多谢多谢     我是用sqlserver2000

------解决方案--------------------
这为老兄你可把我折磨惨了,我想到凌晨3点。给你我的存储过程中的算法~~~
create proc spsel
@info varchar(100) --一个参数包含了所有可选信息的参数
as
declare @a varchar(20),@b varchar(20),@c varchar(20),@d varchar(20)
select @[email protected] [email protected]
if charindex( ', ',@a) <> 0 --判断参数中是否含有,分割符
begin
select @b=left(@a,charindex( ', ',@a)-1) --将第一个,[email protected]
select @a=right(@a,len(@a)-len(@b)-1) [email protected]@[email protected]
end
if charindex( ', ',@a) <> 0 --判断参数中是否还含有,分割符
begin
select @c=left(@a,charindex( ', ',@a)-1) --同上,二次取值
select @a=right(@a,len(@a)-len(@c)-1) -- 同上
end
else
select @[email protected] --最后剩下来的交给 @d
select * from info_table --查询表,[email protected],@b,@c
where [email protected] or [email protected] or [email protected] and
[email protected] or [email protected] or [email protected] and
[email protected] or [email protected] or [email protected]
go
--调用存储过程,如下所示~~~~
exec spsel '张三,男,20 '
exec spsel '张三,20 '
....
有空交流交流~~~~~~~谢谢
------解决方案--------------------
--頁面提供三個TextBox 分別為: txtName,txtSex,txtAge

--創建sp

create procedure dbo.usp_test
@name varchar(50)= ' ',
@Sex varchar(02)= ' ',
@Age int=999
AS
select * from T
where ([name][email protected] or @name= ' ')
and ([Sex][email protected] or @Sex= ' ')
and ([Age][email protected] or @Age=999)

GO
  相关解决方案