今天在做統計數據的時候,傳入數組導致數據不顯示。解決方式和大家分享一下:
--參數@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
