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'
为什么执行第一句就有数据
执行下行的就没数据
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'
set @a=(select [U_power] from UserGroup where U_ID='1')
估计你的意思应该是这样
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+')')
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
替换成'admin2','cai','admin','ccccccc'
再进行查找
--或者
set @a=(select [U_power] from UserGroup where U_ID='1')
begin
exec ('select * from Operator where Username in('+@a+')')
end