日期:2014-05-18 浏览次数:20651 次
create procedure pr_test(
@str varchar(1200)='2010,2011,2012,2013'
)
as
declare @tmp varchar(1200),@mid varchar(1200),@sql varchar(max)
set @tmp=''
set @mid=REPLACE(@str,',','')
set @sql='SELECT * FROM Order WHERE '
declare @count int ,@len int
select @len=len(@str)-len(REPLACE(@str,',',''))
set @count=0
while @len-@count>=0
begin
if(LEN(@TMP)=0)
BEGIN
SET @tmp= ' years like ''' +substring(@mid,1,4)+'%'''
set @mid=SUBSTRING(@mid,5,LEN(@mid)-4);
END
ELSE
BEGIN
set @tmp=@tmp+' or years like '''+substring(@mid,1,4)+'%'' '
set @mid =SUBSTRING(@mid,5,LEN(@mid)-4);
END
set @count=@count+1
end
set @sql=@sql+ @tmp
select @sql --1
exec(@sql)
/* --1 打印出的结果是,最后将 select @sql 注释掉
SELECT * FROM Order WHERE years like '2010%' or years like '2011%' or years like '2012%' or years like '2013%'
最后 将 @str varchar(1200)='2010,2011,2012,2013' 的参数换成你的即可*/