逗号分隔:字符串中,通过逗号进行字段分隔,分为多行
比如:
a,b,c
分隔成三行
a
b
c
函数解析
charindex(@split,@datas) #获取第一个分隔符所在位置
#@split为分隔符,通过什么分隔符号进行字段分隔
#@datas为含有分隔符的字段,对此字段进行分隔
substring(@datas,@startindex,@endindex) #截取字段
#@datas用于截取的字段
#@startindex开始索引位置
#@endindex结束索引位置
len(@datas) #该字符串的总长度
整体编写逗号分隔函数
alter function dbo.splitstr(
@datas varchar(100),
@split varchar(10)
)
return @tables table(datas varchar(100))
as begin
while charindex(@split,@datas)>0 #是否存在分隔符
begin
insert into @tables(datas)
select substring(@datas,1,charindex(@split,@datas)-1) #截取出第一个分隔符之前的字段
set @datas = (select substring(@datas, charindex(@split,@datas)+1, len(@datas)))
end
insert into @tables(datas) values(@datas)
return
end
逗号拼接:多行列值拼接成一个字符串
如
a
b
c
结果:a,b,c
解析
for xml path('') #以xml的格式进行值拼接
stuff(@datas,1,1,'') #清除字符串的第一个字符
代码编写
select stuff((select ','+lastname from hrmresource where id in (2,3,4,5,6) for xml path('')),1,1,'')