select * from 表1
where name = @name  and  ((work like '%'+ @work + '%') or @work = '')

解决方案 »

  1.   

    在存储过程中定义一个变量@str if @work=''
      begin
        set @Str=''
      end
     else
      begin
        set @Str=' and (work Like%'''+@work+'''' 
      end
    .......
      --用动态语句执行 exec('select * from 表1 where 
           name = '''+@name+@str)
      

  2.   

    你可以加个if 来决定是否要 and  (work like '%'+ @work + '%')
      

  3.   

    不好意思,我现在有点急事,要走开会儿,等等再回复,抱歉!还有,我想问个问题,我向存储过程中传入几个参数,当参数值为空的话,默认取全部资料。
    当参数值不为空的话,取填入的值。我试着这样写,但不行,大家看看是哪里出的问题。参数 @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条件没有起到作用。可以这样写吗?
      

  4.   

    用我的這種不行嗎?select * from 表1
    where name = @name  and  ((work like '%'+ @work + '%') or @work = '')
      

  5.   

    select * from 表1
    where name = @name  and  ((work like '%'+ @work + '%') or @work = '')
    这样是可以的,谢谢!
      

  6.   

    select * from 表1
    where name = @name  and  ((work like '%'+ @work + '%') or @work = '')