SQL實現數組的功能


今天在工作遇到了一個問題,需要往表中添加數量不小而且沒有規律的的數據。思考后我想到了使用高級語言中的數組功能解決。

由於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=1
10 
11 while @ix>0
12 
13 begin
14 
15 set @ix=charindex(',',@List,@pos)
16 
17 if @ix>0
18 
19 set @str=substring(@list,@pos,@ix-@pos)
20 
21 else
22 
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+1
30 
31 end

  

該示例代碼可以插入沒有規律的名字的數據集,調用方式為: 

 exec insertUsers_of_array@list='Mi,Meizu,Oppo,Huawei,ZTZ,PPK'

結果如下:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM