在 SQL Server 中使用 FOR XML 的 Raw 模式是为了将结果集中的每一行转换为一个 XML 元素。对于本 SQL FOR XML RAW 模式示例,我们使用的是 SQL Test 中存在的新员工表。下面的截图显示了该数据库中的 SQL Server 表。

SQL FOR XML RAW 示例 1
在本例中,我们将向您展示使用 FOR XML RAW 模式的基本方法。使用 Raw 模式最简单的方法是在您的 Select 语句之后添加 FOR XML RAW 到我们的 数据库中。
-- SQL Server FOR XML RAW Example
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
,[HireDate]
FROM [NewEmployee]
FOR XML RAW;

正如您从上面的 SQL Server 截图中所看到的,查询已生成了 XML 文件。请单击超链接查看 XML 文件。

请注意,新员工表中的每一行都映射到
SQL FOR XML RAW 示例 2
在此 FOR XML RAW 示例中,让我们看看如何将列值添加为子元素(而不是属性)。为此,我们必须将 ELEMENTS 关键字与 FOR XML RAW 一起使用。
-- SQL Server FOR XML RAW Example
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
,[HireDate]
FROM [NewEmployee]
FOR XML RAW, ELEMENTS;

现在您可以看到 SQL For XML Raw 已将列值添加为子元素。

FOR XML RAW 示例 3
如果您查看之前的 For XML RAW 图像,每一行都由默认的
-- SQL Server FOR XML RAW Example
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
,[HireDate]
FROM [NewEmployee]
FOR XML RAW('EmployeeDetails'), ELEMENTS;

如您所见,

FOR XML RAW 示例 4
SQL Server FOR XML RAW 允许您创建一个新的根元素,该元素将包含所有其他元素。为此,请将 ROOT 关键字与 FOR XML RAW 一起使用。
-- SQL Server FOR XML RAW Example
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
,[HireDate]
FROM [NewEmployee]
FOR XML RAW('Employee'), ROOT, ELEMENTS;

XML 文件是

SQL FOR XML RAW 示例 5
如果您观察上面的截图,在父级别有一个
-- SQL Server FOR XML RAW Example
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
,[HireDate]
FROM [NewEmployee]
FOR XML RAW('Employee'),
ROOT('EmployeeDetails'), ELEMENTS;

现在您可以看到

FOR XML RAW 示例 6
如果您观察所有上述示例,生成的 XML 文件会忽略带有 NULL 值的元素。这是 Sql Server For XML Raw 的默认行为,但您可以通过添加 XSINIL 关键字来更改此行为。
-- SQL Server FOR XML RAW Example
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
,[HireDate]
FROM [NewEmployee]
FOR XML RAW('Employee'),
ROOT('EmployeeDetails'), ELEMENTS XSINIL;

现在您可以看到 XML 文件显示了带有 null 值的元素。

FOR XML RAW 示例 7
通过使用 XMLSCHEMA 关键字,您可以生成带有架构的 XML 文件。在本 SQL FOR XML RAW 示例中,我们将展示相同的操作。
-- SQL Server FOR XML RAW Example
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
,[HireDate]
FROM [NewEmployee]
FOR XML RAW('Employee'),
ROOT('EmployeeDetails'), ELEMENTS XSINIL, XMLSCHEMA;

您可以看到 For XML Raw 正在返回带有架构的 XML 文件。

让我将默认目标命名空间更改为自定义命名空间。
-- SQL Server FOR XML RAW Example
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
,[HireDate]
FROM [NewEmployee]
FOR XML RAW('Employee'),
ROOT('EmployeeDetails'), ELEMENTS XSINIL, XMLSCHEMA('urn:tutorialgateway.org');

您可以看到我们在上面的查询中使用的命名空间。
