SQL Server 常见For XML语句比较
目录
SQL语句:
SELECT TOP (3) a.orderid,b.companyname,c.firstname
FROM Sales.MyOrders a
INNER JOIN Sales.Customers b ON b.custid = a.custid
INNER JOIN HR.Employees c ON a.empid = c.empid
结果:
For XML Raw
- sql
SELECT TOP(3) a.orderid,b.companyname,c.firstname
FROM Sales.MyOrders a
INNER JOIN Sales.Customers b ON b.custid = a.custid
INNER JOIN HR.Employees c ON a.empid = c.empid
FOR XML RAW
- 结果
- 说明
每一条记录就是一行,row是固定的标签名,列名对应里面的属性名
For XML Path
- sql
SELECT a.orderid,b.companyname,c.firstname
FROM Sales.MyOrders a
INNER JOIN Sales.Customers b ON b.custid = a.custid
INNER JOIN HR.Employees c ON a.empid = c.empid
FOR XML PATH('MyOrders'),ROOT('Root')
- 结果
- 说明
Root(可选)参数的值作为第一层,Path参数的值作为第二层,列名作为第三层,全部以标签的形式展现,最多三层,列与列平级。
For XML Auto
- sql
SELECT TOP(3) a.orderid,b.companyname,c.firstname
FROM Sales.MyOrders a
INNER JOIN Sales.Customers b ON b.custid = a.custid
INNER JOIN HR.Employees c ON a.empid = c.empid
FOR XML Auto
- 结果
- 说明
根据表的别名,列出现的顺序(第一个列是哪个表的,哪个表名就在最外层),自动依次缩进生成XML,列名是表名中的属性,有多少个表,就有多少层
For XML Auto,Element
- sql
SELECT TOP(3) a.orderid,b.companyname,c.firstname
FROM Sales.MyOrders a
INNER JOIN Sales.Customers b ON b.custid = a.custid
INNER JOIN HR.Employees c ON a.empid = c.empid
FOR XML Auto,Element
- 结果
- 说明
在For XML Auto的基础上,将原来是属性的列名变为了标签。