WEB开发网
开发学院数据库MSSQL Server SQL2005下利用XML进行项目的合并与拆分 阅读

SQL2005下利用XML进行项目的合并与拆分

 2010-04-20 00:00:00 来源:WEB开发网   
核心提示: 最后我们来说说折分吧如:/*idvalue------1aa,bb2aaa,bbb,ccc欲按id,分拆value列,分拆后结果如下:idvalue---1aa1bb2aaa2bbb2ccc*/一般我们在下会借助中间生成一个连续的序列,然后和表关联折分,SQL2005下利用XML进行项目的合并与

最后我们来说说折分吧

如:

/* 
id value 
----------- ----------- 
1 aa,bb 
2 aaa,bbb,ccc 
欲按id,分拆value列, 分拆后结果如下: 
id value 
----------- -------- 
1 aa 
1 bb 
2 aaa 
2 bbb 
2 ccc 
*/

一般我们在下会借助中间生成一个连续的序列,然后和表关联折分,在下我们可借助CTE生成一个序列然后再拆分

------------------------------------------------------------------------ 
-- Author: HappyFlyStone 
-- Date : 2009-01-04 20:57:59 
-- Ver: Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86) 
-- Apr 14 2006 01:12:25 
-- Copyright (c) 1988-2005 Microsoft Corporation 
-- Standard Edition on Windows NT 5.0Build 2195: Service Pack 4) 
------------------------------------------------------------------------ 
  
CREATE TABLE TB(ID INT,VALUE VARCHAR(30)) 
INSERT INTO TB VALUES(1,'AA,BB') 
INSERT INTO TB VALUES(2,'AAA,BBB,CCC') 
GO 
SELECT A.ID, B.VALUE 
FROM( 
 SELECT ID, 
 [value] = CONVERT(XML,'<ROOT><V>' + REPLACE([VALUE], ',', '</V><V>') + '</V></ROOT>') 
 FROM tb 
)A 
OUTER APPLY( 
 SELECT value = N.v.value('.', 'varchar(100)') 
 FROM A.[value].nodes('/ROOT/V') N(v) 
)B 
  
DROP TABLE tb 
--查询结果 
/* 
id value 
----------- ------------------------------ 
1 aa 
1 bb 
2 aaa 
2 bbb 
2 ccc 
  
(5 行受影响) 
*/

上一页  1 2 3 4 5 

Tags:SQL 利用 XML

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接