首先需要一个有序数字的配置表t_list
list
0
1
2
3
4
5
6
7
8
9
10
11
12
...
下面函数能够拆分
declare @str varchar(8000)= ‘,23,1,2,3,4,5,6,7’
为两列,一列为字符串的数值 ,另一列为数据的排序( 注:该函数主要的对包含特征符号(,)的字符串拆分,特征不同需要进行相应的修正)
ALTER function [dbo].[fv_spit_str](@str varchar(8000))
returns table
as
return(
select f.str_list,ROW_NUMBER() over(order by list) list_no from (
select substring(@str,list+2,charindex(',',@str+',',list+2)-list-2) str_list,list
from t_list
where substring(','+@str,list+2,8000) like ',_%' and list<=len(@str)
)f
)
select * from fv_spit_str(@str)
应用场景
1、拆分字符串
2、拆分多个字符串,字符串的数值需要按照顺序关联为一行数据