0
点赞
收藏
分享

微信扫一扫

SQL 语句技巧--单列数据变多行数据

云卷云舒xj 2024-01-23 阅读 4

   碰到一个需求,将一个列的数据: “122,123,145” 或者“122,123,145,”,变成多行,表值函数如下:  

Create FUNCTION transColS
(    
    @id varchar(4000)
)
RETURNS @st TABLE (id int) 
begin
   declare @str as varchar(4000)
   IF(substring(@id,len(@id),1))<>','
     SET @id=@id+','

   set @str=@id
   declare @strV as varchar(4000)
   declare @num  int
   set @num=(len(@str)-len(replace(@str, ',', '')))/len(',')  --计算@str中有多少个“,”,用于循环
   while(@num>0)
   begin
    set @strV=substring(@str,0,charindex(',',@str))
    set @str=substring(@str,LEN(@strV)+2,LEN(@str))
    set @num=@num-1
    insert into @st(id) values(@strV)
   end
   return 
end

查询数据,即可看到数据

select ab.id,t.id from ab cross apply dbo.transColS(ab.id) t

     

结果是:
原有一列的数据:
123,124,125,126,

转化为多行的数据结果:
123
124
125
126



举报

相关推荐

0 条评论