今天在工作遇到了一個問題,需要往表中添加數量不小而且沒有規律的的數據。思考后我想到了使用高級語言中的數組功能解決。
由于SQL Server并沒有數組類型,ANSI SQL-92標準中并沒有任何有關數組方面的定義。要實現其他高級語言中的數組功能,我們必須使用一些特殊的處理方法,其中包括特殊設計的字符參數、臨時表、xml等。
我想到的是用特殊字符分割提取的方法:
用VARCHAR數據類型來模擬一個數組,數組中元素用逗號隔開,接著通過WHILE循環使用CHARINDEX以及SUBSTRING函數來提取其中的元素。實例代碼如下:
1 create PRoc insertUsers_of_array (@Namelist varchar(1000)) 2 3 as 4 5 declare @ix int,@pos int,@str varchar(1000) 6 7 set @pos=1 8 9 set @ix=110 11 while @ix>012 13 begin14 15 set @ix=charindex(',',@List,@pos)16 17 if @ix>018 19 set @str=substring(@list,@pos,@ix-@pos)20 21 else22 23 set @str=substring(@list,@pos,len(@list))24 25 set @str=ltrim(rtrim(@str))26 27 insertinto [dbo].[userlist] values(@str,1,'Xiaoming',GETDATE(),'Xiaoming',GETDATE())28 29 set @pos=@ix+130 31 end
該示例代碼可以插入沒有規律的名字的數據集,調用方式為:
exec insertUsers_of_array@list='Mi,Meizu,Oppo,Huawei,ZTZ,PPK'
結果如下:
新聞熱點
疑難解答