where 1=1 {0}后面的一个一个拼上去如果要再加条件,将{0}转化成条件,例如 :将{0}转化成 And 字段=‘ds’
楼主可以参考一下我回复过的这个贴 http://topic.csdn.net/u/20080211/15/fa61ce0c-c704-425c-bbac-3b90dcb99ceb.html alter proc [dbo].[usp_SearchTMSelect] ( @TargetID char(10), @BeginData varchar(50), @EndData varchar(50), @WordID varchar(50), @NameMM varchar(50), @ProjectID varchar(50), @TrainNumber varchar(50), @CompleteSituation varchar(50) ) asdeclare @w varchar(8000),@sql varchar(8000) select @w='',@sql=''if @ProjectID is not null set @w=@w+'and ProjectID like ''%'+@ProjectID+'%'''if @TrainNumber is not null set @w=@w+'and TrainNumber like ''%'+@TrainNumber+'%'''if @CompleteSituation is not null set @w=@w+'and CompleteSituation like ''%'+@CompleteSituation+'%'''if @NameMM is not null set @w=@w+'and NameMM like ''%'+@NameMM+'%'''if @TargetID is not null set @w=@w+'and TargetID like ''%'+@TargetID+'%'''if @WordID is not null set @w=@w+'and WordID like ''%'+@WordID+'%'''if @BeginData is not null and @EndData is not null set @w=@w+'and Data between '''+@BeginData+''' and '''+@EndData+''''if @w<>'' or @w is not null set @w=' where '+stuff(@w,1,3,'') set @sql='select * from SearchTM'+@wprint @sql --exec (@sql) exec usp_SearchTMSelect @TargetID = NULL, @BeginData = NULL, @EndData = NULL, @WordID = NULL, @NameMM = N'张嘉', @ProjectID = N'1335870580', @TrainNumber = NULL, @CompleteSituation = N'已完成'/* 测试结果:select * from SearchTM where ProjectID like '%1335870580%'and CompleteSituation like '%已完成%'and NameMM like '%张嘉%'*/
很简单写存储过程例子 create proc a@a int='', @b varchar(10)='', ..as select * from 你要查的表 where (字段1=@a or @a='') and .......你可以设定查旬的条件 如果没输入的话 就直接传入 空值
http://topic.csdn.net/u/20080211/15/fa61ce0c-c704-425c-bbac-3b90dcb99ceb.html
alter proc [dbo].[usp_SearchTMSelect]
(
@TargetID char(10),
@BeginData varchar(50),
@EndData varchar(50),
@WordID varchar(50),
@NameMM varchar(50),
@ProjectID varchar(50),
@TrainNumber varchar(50),
@CompleteSituation varchar(50)
)
asdeclare @w varchar(8000),@sql varchar(8000)
select @w='',@sql=''if @ProjectID is not null
set @w=@w+'and ProjectID like ''%'+@ProjectID+'%'''if @TrainNumber is not null
set @w=@w+'and TrainNumber like ''%'+@TrainNumber+'%'''if @CompleteSituation is not null
set @w=@w+'and CompleteSituation like ''%'+@CompleteSituation+'%'''if @NameMM is not null
set @w=@w+'and NameMM like ''%'+@NameMM+'%'''if @TargetID is not null
set @w=@w+'and TargetID like ''%'+@TargetID+'%'''if @WordID is not null
set @w=@w+'and WordID like ''%'+@WordID+'%'''if @BeginData is not null and @EndData is not null
set @w=@w+'and Data between '''+@BeginData+''' and '''+@EndData+''''if @w<>'' or @w is not null
set @w=' where '+stuff(@w,1,3,'')
set @sql='select * from SearchTM'+@wprint @sql
--exec (@sql)
exec usp_SearchTMSelect
@TargetID = NULL,
@BeginData = NULL,
@EndData = NULL,
@WordID = NULL,
@NameMM = N'张嘉',
@ProjectID = N'1335870580',
@TrainNumber = NULL,
@CompleteSituation = N'已完成'/*
测试结果:select * from SearchTM where ProjectID like '%1335870580%'and CompleteSituation like '%已完成%'and NameMM like '%张嘉%'*/
create proc a@a int='',
@b varchar(10)='',
..as
select * from 你要查的表 where (字段1=@a or @a='') and .......你可以设定查旬的条件
如果没输入的话 就直接传入 空值
当你不选的时候默认这个@a='' 说明此条件作废不用考虑! 如果选择的话 就执行这个条件 字段1=@a 你可以给分数了!
你不给就是我太傻太天真了