SQL Server逗号分隔/逗号拼接

逗号分隔:字符串中,通过逗号进行字段分隔,分为多行

比如:
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,'')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值