--try
create procedure sp_test
  @ids varchar(8000)
  as
begin
select top 2000 id=identity(int,1,1) into # from syscolumns a,syscolumns b
select 
字段=substring(@ids,b.id,charindex(',',@ids+',',b.id)-b.id)
from  # b
where substring(','+@ids,b.id,1)=','
order by b.id
drop table #
end--测试 
sp_test '020,021,022'
--结果
字段         
---------- 
020
021
02(所影响的行数为 3 行)-删除存储过程
Drop PROC sp_test

解决方案 »

  1.   

    写个函数:
    CREATE FUNCTION f_splitSTR(
    @s   varchar(8000),   --待分拆的字符串
    @split varchar(10)     --数据分隔符
    )RETURNS @re TABLE(col varchar(100))
    AS
    BEGIN
    DECLARE @splitlen int
    SET @splitlen=LEN(@split+'a')-2
    WHILE CHARINDEX(@split,@s)>0
    BEGIN
    INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1))
    SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')
    END
    INSERT @re VALUES(@s)
    RETURN
    END
    GO
      

  2.   

    谢谢楼上两位的帮助,我试过了,可以啊
    但我看了一下,我的参数是这样的  
    @ids='''020'',''021'',''022'''请问可以吗,谢谢啊,搞定就结贴
      

  3.   

    ALTER procedure sp_test
      @ids varchar(8000)
      as
    begin
    select top 2000 id=identity(int,1,1) into # from syscolumns a,syscolumns b
    select 
    字段=replace(substring(@ids,b.id,charindex(',',@ids+',',b.id)-b.id),'''','')
    from  # b
    where substring(','+@ids,b.id,1)=','
    order by b.id
    drop table #
    end
    --测试sp_test '''020'',''021'',''022'''--结果
    字段 
    ---------------------
    020
    021
    022(所影响的行数为 3 行)