博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL 语句技巧--单列数据变多行数据
阅读量:6715 次
发布时间:2019-06-25

本文共 791 字,大约阅读时间需要 2 分钟。

   碰到一个需求,将一个列的数据: “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

转载于:https://www.cnblogs.com/zping/archive/2011/06/23/2088099.html

你可能感兴趣的文章
DataSource的可配参数有哪些,有哪些DataSource可以用
查看>>
免费的后台管理界面框架
查看>>
本地文件共享服务(nfs samba ftp)
查看>>
scp通过代理proxy传输文件
查看>>
excel 打开时报“发现不可读的内容...”
查看>>
pandas-利用python进行数据分析
查看>>
数据段、代码段、堆栈段、BSS段的区别
查看>>
Apache Bench
查看>>
WebService之Axis2快速入门(5): 管理会话(Session)
查看>>
以太坊RPC接口使用
查看>>
普通html标签<form>和struts2<s:form>的区别
查看>>
安装NTFS For Mac时显示文件已损坏怎么办
查看>>
-webkit-line-clamp实现多行文字溢出隐藏显示省略号
查看>>
Sublime Text 3 - 设置自动换行
查看>>
nil / Nil / NULL / NSNull in Objective-C
查看>>
iphone系统架构以及各层提供的主要服务
查看>>
配置sunspot tomcat结合sunspot_rails
查看>>
数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 执行
查看>>
飞信系统4月29日升级后飞信机器人无法使用的解决办法
查看>>
Linux Epoll介绍和程序实例
查看>>