SQL实现数组的功能

王朝学院·作者佚名  2016-05-25
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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=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'

结果如下:

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航