declare @str varchar(300)
set @sql='('a','b','c’)'
exec('select * From a where a.column_a in '+@sql+'')

解决方案 »

  1.   

    --查询语句用
    select * 
    From a 
    where charindex(','+rtrim(a.column_a+',',','+@s+',')>0
    --参数传递用:
    set @s='a,b,c'
      

  2.   

    select @s =  ‘a’+’,’ + ‘b’
    则@s的值是'a,b'
    你看('a','b','c’) 中有这样的值吗?
      

  3.   

    select @s =  '''a'''+',' + '''b'''
    改成这个看看
      

  4.   

    in的语法是in(参数列表) 所以 in(@s)
    @s只是其中一个叁数而已.
      

  5.   

    declare @str varchar(300)
    set @sql='(''a'',''b'',''c'’)'
    exec('select * From a where a.column_a in '+@sql+'')
      

  6.   

    要使用动态语句实现
    function不支持,使用procedure,其中语句set @s='''a'',''b'',''c'''
    exec p_Selfproc @screate procedure p_Selfproc 
     @s nvarchar(100)
    as 
     .......
     exec('select * from a where column_a in ('+@s+')')
     .......
    go
      

  7.   

    declare @s varchar(8000)
    set @s='''a'',''b'',''c'''exec('select * from a where a.column_a in ('+@s +')')
      

  8.   

    謝謝各位
     function不可以動態sql所以動態sql是不行的 zjcxc(邹建) 方法正在試了,真的很感謝!
     
     請問:zjcxc(邹建)
     
     in的语法是
     in(参数列表) 
     所以 in(@s)
     @s只是其中一个叁数而已.
     只能適應一個參數列表時的狀況了,是不是? 現在想通了,很感謝! 
     
      

  9.   

    to :zjcxc(邹建) 明白了,非常謝謝!!