T-SQL and XML
1 --以默认的<row></row>包裹一个行对象,列名为属性名,值为行值 2 SELECT TOP 1000 * FROM [AdventureWorks2008R2].[Person].[Person] FOR XML RAW 3 4 --以默认的<row></row>包裹一个行对象,列名为元素名,包裹行值 5 SELECT TOP 1000 * FROM [AdventureWorks2008R2].[Person].[Person] FOR XML RAW , ELEMENTS 6 7 --以自定义<PersonDetails></PersonDetails>包裹一个行对象,列名为元素名,包裹行值 8 SELECT TOP 1000 * FROM [AdventureWorks2008R2].[Person].[Person] FOR XML RAW('PersonDetails') , ELEMENTS 9 10 11 --与FOR XML RAW 差不多,只是会自动以表名称包裹一个行对象, 12 SELECT TOP 1000 * FROM [Person].[Person] FOR XML AUTO 13 14 -- 15 CREATE TABLE xmltest 16 ( 17 xid INT NOT NULL PRIMARY KEY, 18 xdoc XML NOT NULL 19 ) 20 21 SELECT * FROM dbo.xmltest 22 23 INSERT INTO dbo.xmltest 24 VALUES ( 1, ' 25 <states> 26 <state> 27 <abbr>CA</abbr> 28 <name>California</name> 29 <city>Berkeley</city> 30 <city>Los Angeles</city> 31 </state> 32 <state> 33 <abbr>DE</abbr> 34 <name>Delaware</name> 35 <city>Newark</city> 36 <city>Wilmington</city> 37 </state> 38 </states> 39 ' ) 40 41 42 INSERT INTO dbo.xmltest 43 VALUES ( 2, ' 44 <states> 45 <state> 46 <abbr>CA</abbr> 47 <name>California</name> 48 <city>Berkeley</city> 49 <city>Los Angeles</city> 50 </state> 51 <state> 52 <abbr>DE</abbr> 53 <name>Delaware</name> 54 <city>Newark</city> 55 <city>Wilmington</city> 56 </state> 57 </states> 58 ' ) 59 60 SELECT * FROM dbo.xmltest 61 62 63 64
1 DECLARE @xmlDoc XML; 2 3 SET @xmlDoc = '<book id="0001"> 4 <title>C Program</title> 5 <author>David</author> 6 <price>21</price> 7 </book>' 8 9 10 SELECT @xmlDoc.query('/book/title') 11 12 SELECT @xmlDoc.value('(/book/title)[1]', 'nvarchar(max)') 13 14 SELECT @xmlDoc.value('(/book/@id)[1]', 'nvarchar(max)')