在存储过程中将"where ..."条件判断作为参数@Filter执行时如果@Filter是where name like '%王%'这种形式时该怎么写?  查了好多都没效果..

解决方案 »

  1.   

    where charindex(@filter,name) > 0
      

  2.   


    declare @Filter varchar(50),@str varchar(1000)
    set @Filter='where name like ''%王%'''
    set @str='select * from tb '+@Filter
    exec(@str)
      

  3.   

    exec [dbo].[a] 'where name like ''%王%''' 好像这种形式就不行?
      

  4.   


    set nocount on
    create table tb(id int,num numeric(18,8),ar varchar(10))
    insert into tb select 1,12.12000000,'a'
    insert into tb select 3,125.13500000,'a'
    insert into tb select 4,4821.00000000,'baa'
    insert into tb select 5,1245.78950000,'vav'
    insert into tb select 6,120.14579210,'d'
    insert into tb select 7,15478.00000000,'d'
    insert into tb select 8,334200.00000000,'d'
    gocreate proc result(@wh varchar(100))
    as
    exec('select * from tb ' + @wh)
    goexec result 'where ar like ''%a%'''drop proc result
    drop table tb
    set nocount off
    /*
    id          num                                     ar
    ----------- --------------------------------------- ----------
    1           12.12000000                             a
    3           125.13500000                            a
    4           4821.00000000                           baa
    5           1245.78950000                           vav
      

  5.   

    'where name like ''%王%'''