sql字符串分割为数组的语句示例

发布时间:2019-11-09编辑:脚本学堂
sql语句如何实现字符串分割,这里分享一个sql存储过程,用于对特殊字符分割提取,用varchar数据类型来模拟一个数组,通过while循环使用charindex以及substring函数来提取其中的元素。

sql字符串分割为数组

需求:
往表中添加数量不小而且没有规律的的数据。

使用高级语言中的数组功能解决。
由于SQL Server并没有数组类型,ANSI SQL-92标准中并没有任何有关数组方面的定义。
要实现其他高级语言中的数组功能,必须使用一些特殊的处理方法,其中包括特殊设计的字符参数、临时表、XML等。

特殊字符分割提取的方法:
用VARCHAR数据类型来模拟一个数组,数组中元素用逗号隔开,接着通过WHILE循环使用CHARINDEX以及SUBSTRING函数来提取其中的元素。

代码::
 

复制代码 代码示例:
create proc insertUsers_of_array (@Namelist varchar(1000))
as
declare @ix int,@pos int,@str varchar(1000)
set @pos=1
set @ix=1
while @ix>0
begin
set @ix=charindex(',',@List,@pos)
if @ix>0
set @str=substring(@list,@pos,@ix-@pos)
else
set @str=substring(@list,@pos,len(@list))
set @str=ltrim(rtrim(@str))
insertinto [dbo].[userlist] values(@str,1,'Xiaoming',GETDATE(),'Xiaoming',GETDATE())
set @pos=@ix+1
end
 

 
例子,可以插入没有规律的名字的数据集,调用方式:
 

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

结果:
sql字符串分割为数组