create procedure p(@para varchar(2000)) as select * from a where charindex(','+b+',',','+@para+',')>0
--调用 exec p 'a,b,c'
create procedure p(@para varchar(2000)) as declare @s varchar(8000) set @s = 'select * from a where b in (' + @para + ')' exec (@s) go --C#中: -- string p = "''a'',''b'',''c''"--实际执行的语句: exec p ''a'',''b'',''c'' --参见例子: create table a(ID nvarchar(4),Name nvarchar(50)) go insert a select '1','AA' union all select '2','BB' union all select '3','CC'create table b(ID nvarchar(4),Name nvarchar(50)) go insert b select '1','1' union all select '2','1,2' union all select '3','1,2,3' --select * from a where a.id in (1,2,3)--第一种方法 declare @s varchar(1000),@s2 varchar(1000) select @s2= name from b where id='3' set @s='select * from a where a.id in (' + @s2 + ')' select @s,@s2 exec (@s) --select * from a where a.id in ('1','2','3')--第二种方法 select * from a where charindex(','+id+',',(select ','+name+',' from b where id='3'))>0 drop table a,b
参数两边用双引号"",每个字母,即a、b、c两边分别都有2个单引号 string p = "''a'',''b'',''c''"
as
select * from a where charindex(','+b+',',','+@para+',')>0
exec p 'a,b,c'
as
declare @s varchar(8000)
set @s = 'select * from a where b in (' + @para + ')'
exec (@s)
go
--C#中:
-- string p = "''a'',''b'',''c''"--实际执行的语句:
exec p ''a'',''b'',''c''
--参见例子:
create table a(ID nvarchar(4),Name nvarchar(50))
go
insert a
select '1','AA' union all
select '2','BB' union all
select '3','CC'create table b(ID nvarchar(4),Name nvarchar(50))
go
insert b
select '1','1' union all
select '2','1,2' union all
select '3','1,2,3'
--select * from a where a.id in (1,2,3)--第一种方法
declare @s varchar(1000),@s2 varchar(1000)
select @s2= name from b where id='3'
set @s='select * from a where a.id in (' + @s2 + ')'
select @s,@s2
exec (@s)
--select * from a where a.id in ('1','2','3')--第二种方法
select * from a where charindex(','+id+',',(select ','+name+',' from b where id='3'))>0
drop table a,b
string p = "''a'',''b'',''c''"