在存储过程中定义一个变量@str if @work='' begin set @Str='' end else begin set @Str=' and (work Like%'''+@work+'''' end ....... --用动态语句执行 exec('select * from 表1 where name = '''+@name+@str)
你可以加个if 来决定是否要 and (work like '%'+ @work + '%')
不好意思,我现在有点急事,要走开会儿,等等再回复,抱歉!还有,我想问个问题,我向存储过程中传入几个参数,当参数值为空的话,默认取全部资料。 当参数值不为空的话,取填入的值。我试着这样写,但不行,大家看看是哪里出的问题。参数 @work declare @strsql char(20) set strsql ='' if @work = '' begin set @strsql='' end else begin set @strsql ='and work ='+ @work endselect * from 表1 where name = @name and flag = @flag + @strsql 请问这样为什么work条件没有起到作用。可以这样写吗?
用我的這種不行嗎?select * from 表1 where name = @name and ((work like '%'+ @work + '%') or @work = '')
select * from 表1 where name = @name and ((work like '%'+ @work + '%') or @work = '') 这样是可以的,谢谢!
select * from 表1 where name = @name and ((work like '%'+ @work + '%') or @work = '')
begin
set @Str=''
end
else
begin
set @Str=' and (work Like%'''+@work+''''
end
.......
--用动态语句执行 exec('select * from 表1 where
name = '''+@name+@str)
当参数值不为空的话,取填入的值。我试着这样写,但不行,大家看看是哪里出的问题。参数 @work
declare @strsql char(20)
set strsql =''
if @work = ''
begin
set @strsql=''
end
else
begin
set @strsql ='and work ='+ @work
endselect * from 表1
where name = @name and flag = @flag + @strsql
请问这样为什么work条件没有起到作用。可以这样写吗?
where name = @name and ((work like '%'+ @work + '%') or @work = '')
where name = @name and ((work like '%'+ @work + '%') or @work = '')
这样是可以的,谢谢!
where name = @name and ((work like '%'+ @work + '%') or @work = '')