(Sql Server)数据的拆分和合并
2013-08-13 18:32
323 查看
(Sql Server)数据的拆分和合并
背景:
今天遇到了数据合并和拆分的问题,尝试了几种写法。但大致可分为两类:一、原始写法。二、Sql Server 2005之后支持的写法。第一种写法复杂而且效率低下,不推荐。所以下面具体讲一下第二种写法。数据的拆分:
再讲拆分前,首先先介绍两个函数:cross apply和outer apply。这两个函数作用是交叉连接。这两个函数是在sql server 2005之后才有的,在2000与之相似的功能是cross join。虽然相似,但是cross join有一个致命功能缺陷。详看代码:第一种写法--表值函数分割
SELECT
id
,t02.item
FROM dbo.aaa AS t01 CROSS apply dbo.Split(t01.name,',') AS t02
--dbo.Split为自定义的字符串分割函数,这个可以自己定义
第一种写法--表值函数分割
第二种写法--xml分割
SELECT
tb01.id
,tb02.VALUE
FROM(
SELECT
id
,[value] = CONVERT(xml,'<root><v>' + REPLACE(name, ',', '</v><v>') + '</v></root>')
FROM dbo.aaa ) AS tb01
OUTER APPLY(
SELECT
VALUE = N.v.VALUE('.', 'varchar(100)') FROM tb01.[value].nodes('/root/v'
) N(v) ) AS tb02
第二种写法--xml分割
View Code
结果如下:
相关文章推荐
- (Sql Server)数据的拆分和合并
- (Sql Server)数据的拆分和合并
- Sql Server 数据的拆分和合并 cross apply和outer apply
- SQL SERVER:在SQL中分类合并数据行
- logstash如何将kakfa合并的数据拆分然后写入ES
- 9、SQL Server 使用联接和联合合并数据
- Sql Server合并多行询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数
- 8位16位32位数据的拆分与合并程序
- php 数据处理--合并,拆分,追加,去重, 多数据
- 10、SQL Server 使用联接和联合合并数据之联接
- sql server 2005 A字段相同数据的B字段合并
- 11、SQL Server 使用联接和联合合并数据之联合
- Sql Server合并多行询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数
- 8位16位32位数据的拆分与合并程序
- SQL Server 2005 合并行数据
- 【数据处理】R语言--data.table -dcast and melt(数据拆分and合并)
- Sql Server合并多行询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数
- SQL Server 函数学习笔记⑥函数的高级应用=》按规则拆分列形成行数据
- sql server多行数据合并显示