今天在做统计数据的时候,传入数组导致数据不显示。解决方式和大家分享一下:

--参数@CompanyName='北京,天津,上海'

   

DECLARE @PointerPrev int 
    DECLARE @PointerCurr int 
    DECLARE @TName nvarchar(100)
    Set @PointerPrev=1 
    while (@PointerPrev < LEN(@CompanyName)) 
    Begin 
        Set @PointerCurr=CharIndex(',',@CompanyName,@PointerPrev) 
        if(@PointerCurr>0) 
        Begin 
            set @TName=SUBSTRING(@CompanyName,@PointerPrev,@PointerCurr-@PointerPrev)

--我们可以在这里直接进行删除或修改

          

DELETE FROM TestA    WHERE Name=@TName

--如果作为查询条件,我需要创建一个临时表,将数据插入进去
        

--insert into #CnameTable (Name) VALUES (@TName)
         --insert into #CnameTable (Name)  SELECT Name FROM TestName where Name like '%'+@TName+'%'


         --这里的TestName 表中数剧量大时会降低查询速度,建议大家用其他方式处理,例如指针、重新拼接字符串等

           

SET @PointerPrev = @PointerCurr+1 
        End 
        else 
            Break 
    End


    --因为最后一个后面没有逗号,所以在循环中跳出,需另外再删除
    

set @TName=SUBSTRING(@CompanyName,@PointerPrev,LEN(@CompanyName)-@PointerPrev+1)
     DELETE FROM TestA    WHERE Name=@TName