代码改变世界

SQL Server 之 FOR XML PATH

2014-08-19 15:00  hduhans  阅读(168)  评论(0)    收藏  举报

  FOR XML PATH方法可以将查询的结果集以XML形式的展示,在实际应用中非常实用。

1、测试表Orders数据如下:

2、普通使用,执行 select * from Orders for xml path ,结果如:

<row><ID>1</ID><ProductName>钢笔</ProductName><CreateTime>2012-01-05T00:00:00</CreateTime></row><row><ID>2</ID><ProductName>笔记本</ProductName><CreateTime>2012-08-26T00:00:00</CreateTime></row><row><ID>3</ID><ProductName>餐巾纸</ProductName><CreateTime>2013-04-11T00:00:00</CreateTime></row><row><ID>4</ID><ProductName>电风扇</ProductName><CreateTime>2013-05-15T00:00:00</CreateTime></row>

3、自定义节点名,执行 select * from Orders for xml path('MyRow') ,结果如: 

<MyRow><ID>1</ID><ProductName>钢笔</ProductName><CreateTime>2012-01-05T00:00:00</CreateTime></MyRow><MyRow><ID>2</ID><ProductName>笔记本</ProductName><CreateTime>2012-08-26T00:00:00</CreateTime></MyRow><MyRow><ID>3</ID><ProductName>餐巾纸</ProductName><CreateTime>2013-04-11T00:00:00</CreateTime></MyRow><MyRow><ID>4</ID><ProductName>电风扇</ProductName><CreateTime>2013-05-15T00:00:00</CreateTime></MyRow>

4、自定义格式,执行 select ProductName+',' from Orders for xml path('') ,结果如:

钢笔,笔记本,餐巾纸,电风扇,

5、移除最后一个, 执行语句:

--查询名称集合,移除最后一个,
select LEFT(B.NameList,LEN(B.NameList)-1) as NameList from (
    select (select ProductName+',' from Orders for xml path('')) as NameList  --数据源
) B

   执行结果(最后一项无逗号):

钢笔,笔记本,餐巾纸,电风扇