select * from Operator where Username in('admin2','cai','admin','ccccccc')-------------------------------------
declare @a varchar(500)
set select @a=[U_power] from UserGroup  where U_ID='1'
begin
select * from Operator where Username in(''''+(replace(@a,',',''','''))+'''')
end
-------------------------@a的值是admin2,cai,admin,ccccccc'
为什么执行第一句就有数据
执行下行的就没数据

解决方案 »

  1.   

    select * from Operator where charindex(Username ,@a) > 0
      

  2.   

    declare @a varchar(500)
    set select @a=[U_power] from UserGroup  where U_ID='1'
    ---
    declare @a varchar(500)
    select @a=[U_power] from UserGroup  where U_ID='1'
      

  3.   

    select @a=[U_power] from UserGroup  where U_ID='1'
      

  4.   

    --或者
    set @a=(select [U_power] from UserGroup  where U_ID='1')
      

  5.   


    估计你的意思应该是这样
    declare @a varchar(500) 
    select @s = isnull(@a+''',''','''')+[U_power] from UserGroup  where U_ID='1' 
    set @s = @s +''''exec('select * from Operator where Username in('+@a+')')
      

  6.   

    你那个写法不对.得用楼上的动态SQL才行.
      

  7.   

    declare @a varchar(500)
    set @a=','
    select @a=@a+[U_power]+',' from UserGroup  where U_ID='1'
    begin
    select * from Operator where patindex(','+Username+',',@a)>0
    end
    declare @a varchar(500)
    set @a=','
    select @a=@a+[U_power]+',' from UserGroup  where U_ID='1'
    begin
    select * from Operator where @a like '%,'+Username+',%'
    end
      

  8.   

    对,只有你的可以,其它答案都不可以.就是把查询得到的数据admin2,cai,admin,ccccccc
    替换成'admin2','cai','admin','ccccccc'
    再进行查找
      

  9.   

    declare @a varchar(500)
    --或者
    set @a=(select [U_power] from UserGroup  where U_ID='1')
    begin
    exec ('select * from Operator where Username in('+@a+')')
    end