Sqlserver 分割字符串为多行 逻辑优化

网上有不少在SqlServer中对字符串拆分成多行的代码,但是找了一圈发现性能无法让人满意,

最终在自己写了一个function 用于处理拆分时的逻辑运算,性能比网上找的快好几倍,

代码如下:

--创建测试表
create table tempTable(
value1 varchar(max)
)
go
--###产生测试数据
declare @val varchar(max)=''
declare @i int=0
while @i<10000--产生10000个值做拼接 可自行修改
begin
	set @val=isnull(@val,'')+','+LEFT(LTRIM(ABS(CHECKSUM(NEWID()))),10)
	set @i=@i+1
end
set @val=SUBSTRING(@val,2,LEN(@val))
insert into tempTable values(@val)
--############

--调用测试拆分
declare @str varchar(max)
select top 1 @str=value1 from tempTable 
select * from splitPro(@str,',') --传入的需要拆分的数据如:aaa,bbb,ccc,ddd,eee,fff,ggg

拆分后效果如下:

Sqlserver 分割字符串为多行 逻辑优化_第1张图片

方法:splitPro 原码获取地址:Sqlserver长字符串拆分为多行高效-SQLServer文档类资源-CSDN下载

你可能感兴趣的:(sqlserver,数据库,database)