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


       碰到一个需求,将一个列的数据: “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
  • 相关阅读:
    6月16日
    9月15日
    9月14日
    9月13日
    9月12日
    6月11日
    梦断代码阅读笔记
    11周总结
    梦断代码阅读笔记
    10第一阶段意见评论
  • 原文地址:https://www.cnblogs.com/zping/p/2088099.html
Copyright © 2020-2023  润新知