日期:2014-05-18 浏览次数:20691 次
--> 测试数据:[test]
if object_id('[test]') is not null
drop table [test]
create table [test](
[id] int,
[info] varchar(6)
)
go
insert [test]
select 1,'1,2,3' union all
select 2,'1,3' union all
select 3,'4,5,6' union all
select 4,'2,4,16'
go
if OBJECT_ID('pro_test')is not null
drop proc pro_test
go
create proc pro_test
(
@str varchar(20)
)
as
create table #test(
id int identity,
value int
)
--declare @str varchar(1000)
--set @str='1,2,3'
declare @sql varchar(1000)
set @sql='insert #test(value)
select '+REPLACE(@str,',',' union all select ')
print @sql
exec(@sql)
select
distinct a.*
from
test a
inner join
#test b
on
CHARINDEX(','+LTRIM(b.value)+',',''+a.[info]+',')>0
go
--主意,我理解的你的包含是指info字段同时包含所给字符串中的没一个数字
exec pro_test '1,3,4'
/*
id info
1 1,2,3
2 1,3
4 2,4,16
*/
--再不是这样就只有帮顶帖子了