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'
结果如下:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~