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'
结果: