SQL SERVER 拆分列为多行
--创建测试表
create table #temp (seq int identity,names varchar(200))
insert into #temp(names)
values('张三,李四'),
('中国,美国,巴西'),
('深圳,上海,北京,广州,哈尔滨'),
('足球,篮球,乒乓球,台球')
目的是要将用逗号分隔的names列拆分为多行,最终要产生的结果为:
1 张三
1 李四
2 中国
2 美国
2 巴西
3 深圳
3 上海
3 北京
3 广州
3 哈尔滨
4 足球
4 篮球
4 乒乓球
4 台球
;with cte as(
select 0 as n
union all
select N+1 from cte where n<100
)
,idx as (
select a.seq,b.n,ROW_NUMBER() over (partition by a.seq order by b.n) as id,','+a.names+',' as names
from #temp a
inner join cte b on b.n<=len(','+a.names+',' )
where SUBSTRING(','+a.names+',',b.n,1)=','
)
select a.seq,substring(a.names,a.n+1,b.n-a.n-1) as name
from idx a
inner join idx b on a.seq=b.seq and a.id=b.id-1
SQL SERVER 拆分列为多行的更多相关文章
- SQL Server创建表超出行最大限制解决方法
问题的现象在创建表A的时候,出现“信息 511,级别 16,状态 1,第 5 行 无法创建大小为 的行,该值大于允许的最大值 8060.”的信息提示.很奇怪,网上查了一下,是因为要插入表的数据类型的 ...
- 统计sql server 2012表的行数
--功能:统计sql server 2012表的行数 SELECT a.name, a.object_id, b.rows, b.index_id FROM sys.tables AS a INNER ...
- SQL SERVER 字符拆分列为多行
注:先学习sql server里的递归CTE. 假设有兴趣表Hobbys Name Hobby 小张 篮球,足球,羽毛球 Name Hobby 小张 篮球 小张 足球 小张 羽毛球 采用[递归cte] ...
- SQL Server中中数据行批量插入脚本的存储实现
看到博友SQL Server MVP桦仔的一篇博文“将表里的数据批量生成INSERT语句的存储过程的实现”.我仔细看来博文中的两个存储代码,自我感觉两个都不太满意,都是生成的单行模式的插入,数 ...
- 处理SQL Server中的重复行
如果表中的数据需要基于行中的多个值具有唯一约束,则适合的解决方案将是复合健. 复合主键 使用SQL Server语法创建符合主键非常简单. create table my_parts ( id_par ...
- SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行
ylbtech-SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行 可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表.PIVOT 通过将表达式某一列 ...
- Oracle sql%rowcount 返回影响行数;sql server @@RowCount返回影响行数
sql server中,返回影响行数是:If @@RowCount<1 Oracle中,返回影响行数是:If sql%rowcount<1 例: sqlserver: create pro ...
- [SQL Server]一列多行转换为字符串
在 SQL Server 中,如何将多行数据变成一个字符串保存. skill 投石 挖矿 刮痧 上面三行数据想要得到结果为:投石,挖矿,刮痧 有两种方式: 拼接字符串. 使用 for XML 首先创建 ...
- SQL server 存储过程中 列传行
select @exchange=exchange,@coupons_type=coupons_type - FLOOR(exchange))) from points_exchange_svc wh ...
随机推荐
- C# subString的理解
public void TestMethod1() { string str = "ABCDEFGHIJKLMN"; string result ...
- MINIX3 进程通信分析
MINIX3 进程通信分析 6.1MINIX3 进程通信概要 MINIX3 的进程通信是 MINIX3 内核部分最重要的一个部件,我个人认为其实这 是内核中的“内核”,怎么来理解这个概念呢?其实 MI ...
- linux定时
linux怎样启动定时任务 crontab -e进入以后的,定时任务写入 */1 * * * * /usr/bin/python /root/lianxi/time_1.py ,每一分钟定时执行tim ...
- WinEdt和TeXworks编辑LaTeX文件乱码问题
WinEdt默认使用的是系统编码,windows下可以认为是 GBK编码,而TeXworks默认使用的是UTF8编码,所以要统一这两个编码,才能保证两个文件互相打开不会乱码. 具体方法如下: 一,可以 ...
- JAVA学习之Ecplise IDE 使用技巧(2)第二章:键盘小快手,代码辅助
上一篇:JAVA学习之Ecplise IDE 使用技巧(1)第一章:我的地盘我做主,工作空间 第二章:键盘小快手,代码辅助 内容包括: 第一:显示行号 如何设置行号:Ecplice菜单Windows& ...
- Cache
1.Cache中的块与主存储器中的块时按照什么样的规则建立对应关系的? 2.在这种对应关系下,主存地址又是如何变换成Cache地址的? Cache信息: 1.数据Cache和指令Cache是分开还是统 ...
- 【转】How-To-Ask-Questions-The-Smart-Way
提问的智慧 How To Ask Questions The Smart Way Copyright © 2001,2006,2014 Eric S. Raymond, Rick Moen 本指南英文 ...
- 最大流 Dinic
struct Dinic { struct node { int x,y,c,next; }line[MAXM]; int Lnum,_next[MAXN],dis[MAXN],dp[MAXN]; b ...
- UI学习笔记---第十天UITableView表视图编辑
UITableView表视图编辑 表视图编辑的使用场景 当我们需要手动添加或者删除某条数据到tableView中的时候,就可以使用tableView编辑.比如微信 扣扣中删除和某人的通话 当我们需要手 ...
- ZMMR107-批量更改PO经价值
************************************************************************ Title : ZMMR107 ** Applicat ...