MSSQL拆分逗号并检索字段
create table curtest (djbh varchar(20) primary key,sales varchar(20)) go insert curtest select 'A1','01,02,03' union all --创建表并插入记录 select 'A2','01,02' union all select 'A3','02,03' union all select 'A4','02,03,04' go declare cur_test cursor for select * from curtest --声明游标 declare @djbh varchar(20) --定义变量单据编号 declare @sales varchar(20) --定义变量销售 declare @star int,@len int,@dhwz int -- 定义变量开始,长度,逗号位置 open cur_test --打开游标 fetch next from cur_test into @djbh,@sales --获取第一条记录 while(@@FETCH_STATUS=0) --根据返回状态确认执行结果。0代表成功 begin set @star=1 --对开始位置赋值1 set @dhwz=CHARINDEX(',',@sales,@star) --获取第一个逗号位置 set @len=LEN(@sales) --获取字段长度 while(@star<=@LEN) --循环条件,开始位置小于字段长度 begin select @djbh,substring(@sales,@star,@dhwz-@star) --获取逗号前字符 set @star=@dhwz+1 --每次循环,将上次逗号位置+1作为下次开始位置 set @dhwz=CHARINDEX(',',@sales,@star) --以上次逗号位置+1作为本次开始位置,检索下一个逗号位置 if(@dhwz=0) --判断,当检索不到逗号(即返回值为0,并且已到达最后一个逗号) begin select @djbh,SUBSTRING(@sales,@star,(@len-@star)+1) --最后一个逗号后字符,以上一次逗号位置+1开始,长度为字段总长度减开始位置+1 break --跳出循环 end end fetch next from cur_test into @djbh,@sales --读取下一条记录,并重新开始执行循环(拆分并检索逗号分割字符) end close cur_test
成都创新互联公司秉承实现全网价值营销的理念,以专业定制企业官网,网站设计制作、网站建设,微信小程序定制开发,网页设计制作,成都做手机网站,网络营销推广帮助传统企业实现“互联网+”转型升级专业定制企业官网,公司注重人才、技术和管理,汇聚了一批优秀的互联网技术人才,对客户都以感恩的心态奉献自己的专业和所长。
文章标题:MSSQL拆分逗号并检索字段
分享URL:http://scyanting.com/article/pijpge.html