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
复制代码
posted @   zping  阅读(2264)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示