在SQL中运用For XML将数据集以XML形式展现,以下是备用数据
CREATE TABLE #tab(ID INT, Name NVARCHAR(20)) INSERT INTO #tab ( ID, Name ) SELECT 1,N'chris' UNION SELECT 2,N'mark' UNION SELECT 3,N'andy'
1、AUTO模式,将查询结果的每一行转为元素,元素名以表名命名,每一列(非NULL)转换成row元素的属性。
SELECT * FROM #tab FOR XML AUTO
<_x0023_tab ID="1" Name="chris" /> <_x0023_tab ID="2" Name="mark" /> <_x0023_tab ID="3" Name="andy" />
2、RAW模式,和AUTO类似,只是元素以row命名。
SELECT * FROM #tab FOR XML RAW
<row ID="1" Name="chris" /> <row ID="2" Name="mark" /> <row ID="3" Name="andy" />
3、ELEMENTS,将每一列作为一个元素。
SELECT * FROM #tab FOR XML AUTO,ELEMENTS
<_x0023_tab> <ID>1</ID> <Name>chris</Name> </_x0023_tab> <_x0023_tab> <ID>2</ID> <Name>mark</Name> </_x0023_tab> <_x0023_tab> <ID>3</ID> <Name>andy</Name> </_x0023_tab>
4、PATH,用法更加灵活,可以自定义节点、元素、属性等。ROOT,增加根节点。
SELECT * FROM #tab FOR XML PATH('employee'),ELEMENTS
<employee> <ID>1</ID> <Name>chris</Name> </employee> <employee> <ID>2</ID> <Name>mark</Name> </employee> <employee> <ID>3</ID> <Name>andy</Name> </employee>
SELECT ID AS 'staff/@ID',NAME AS 'staff/@Name','', ID AS 'ID','', NAME AS 'Name' FROM #tab FOR XML PATH('employee'),ROOT('all')
<all> <employee> <staff ID="1" Name="chris" /> <ID>1</ID> <Name>chris</Name> </employee> <employee> <staff ID="2" Name="mark" /> <ID>2</ID> <Name>mark</Name> </employee> <employee> <staff ID="3" Name="andy" /> <ID>3</ID> <Name>andy</Name> </employee> </all>