转自http://www.cnblogs.com/4mylife/archive/2012/09/06/2672755.html
FOR XML PATH 方法是用于将查询结果集以XML形式展示,这样展示方式的好处不言而喻。现在我要介绍的FOR XML PATH的“另类”用法。
首先,我们先来看看它的正常用法。下图是我们用到的一张TEST_PERSON表:
用FOR XML PATH方法查询,SQL语句如下:
SELECT * FROM TEST_PERSON FOR XML PATH
显示结果如下:
展开结果可以看到如下图:
神奇吧!!!!细心的同学会注意到这个XML文件的行节点是<row>,如果需求需要改变这个行节点为<animal>,怎么改?看下面的SQL语句你就会知道了。
SELECT * FROM TEST_PERSON FOR XML PATH('animal')
展开结果如下图:
简单吧!!!有野心的同学就会说了:既然行节点可以改变,那列节点要改变又该怎么操作呢?很简单,只要给字段加别名。SQL语句如下:
SELECT ID AS XuHao,NAME AS MyName FROM TEST_PERSON FOR XML PATH('animal')
展开结果如下:
好玩吧!!!古怪的同学就想了:既然行和列都可以自定义,那么是否说我们可以定义我们喜欢的输出方式呢?!(我们要说的重点就是这)
看如下SQL语句:
SELECT '['+NAME+']' +' 'FROM TEST_PERSON FOR XML PATH('')
展示结果如下:
说了这么多,好像只是为了好玩。那么有哪些实际的应用场景中可以用到这个技术呢?
例如:要查询一个订单信息,这些信息包括(订单号+费用名称+...),而费用我们是存在单独的一个子表中,且一个订单不只一笔费用。
接下来我们增加个动物的行为表TEST_HOBBY表,用演示以上效果。TEST_HOBBY表如下:
我们查动物信息(动物名字+动物行为),动物行为存在TEST_HOBBY表中,我们通过ID 关联,并且一个动物存在多种行为。SQL语句如下:
SELECT
PE.NAME,--取出TEST_PERSON表中的NAME字段
--通过ID关联到TEST_HOBBY表,并把这表中各种动物的行为拼接为一个字段返回
(SELECT ' '+HO.HOBBY_NAME+' ' FROM TEST_HOBBY HO WHERE HO.PARENT_ID=PE.ID FOR XML PATH('')) AS HOBBY
FROM TEST_PERSON PE
结果展示如下:
分享到:
相关推荐
### SQL Server FOR XML PATH 语句的应用 #### 概述 在数据库操作中,将查询结果转换为XML格式的需求十分常见。SQL Server 提供了多种方法来生成XML数据,其中`FOR XML PATH`是最常用的方法之一。通过使用`FOR XML...
`FOR XML PATH` 是 SQL Server 中用于构造 XML 数据的一个强大工具。通过这个语句,你可以将 SQL 查询结果转换成 XML 格式,便于数据交换、存储或者进一步处理。以下是对 `FOR XML PATH` 语句的详细解释和应用示例。...
由于ACCESS 没有oracle的listagg函数,也没有sql server这种 for xml path 这种, 要实现分组合并需要自定义一个函数,理解了 for xml path 这个就很好理解了。
本篇文章主要介绍了SQL Server中FOR XML子句的四种不同用法:AUTO、RAW、EXPLICIT和PATH,并且通过实例对每种方式进行了分析比较。 1. RAW方式 RAW方式是将查询结果集中的每一行数据转换成一个XML元素的过程,它是...
在IT领域,Access数据库和XML(可扩展标记语言)文件都是常见的数据存储和交换格式。Access是Microsoft开发的关系型数据库管理系统,适用于小型到中型企业,用于存储和管理结构化数据。而XML则是一种通用的数据交换...
在这个例子中,`FOR XML PATH('')` 指定了 PATH 模式,并且使用了空字符串 `' '` 来指示每个列名作为路径的一部分,而 `ROOT('report')` 则指定了整个 XML 文档的根元素。 #### 小结 通过上述介绍,可以看出 SQL ...
你可以使用FOR XML RAW、FOR XML AUTO、FOR XML PATH和FOR XML EXPLICIT四种模式来生成XML。 2. OPENXML函数:用于解析XML文档并创建一个虚拟表,使得可以像处理普通表格一样处理XML数据。 3. sp_xml_...
SELECT EmployeeID '@id', FirstName 'fn', LastName 'ln' FROM Employees FOR XML PATH('Employee') ``` 这会创建一个XML,其中每个`Employee`元素包含`id`、`fn`和`ln`三个属性,分别对应`EmployeeID`、`...
### SQL字符处理:利用FOR XML PATH进行数据拼接 在SQL Server中,有时我们需要将同一组内的多个字段值拼接成一个字符串。这种需求常见于报告生成、数据汇总等场景。本文将详细介绍如何使用`FOR XML PATH`方法来...
首先,我们来看下`FOR XML PATH`函数的使用,这是在SQL Server中用来将查询结果输出为XML格式的一个重要工具。通过指定`PATH`子句,你可以控制输出的XML结构。如果省略`PATH`子句,那么输出的XML将是一个单节点,...
这个过程可以通过几种不同的方法来实现,其中包括使用FOR XML PATH子句和CONCAT函数。我们将深入探讨这些方法,并结合提供的示例进行解释。 首先,`FOR XML PATH('')` 是SQL Server中用于生成XML的一种方式,但在...
通过以上方法,我们可以成功地使用FOR XML PATH生成XML数据,即使列名包含不合法的XML标识符。在实际应用中,为了避免类似问题,建议在设计数据库时遵循良好的命名规范,避免使用特殊字符或空格作为列名。同时,对已...
2. **FOR XML PATH() 函数的应用**:详细解释FOR XML PATH()函数在行列转换中的作用及其实现方法。 3. **动态SQL的使用**:探讨如何通过动态SQL来解决行列转换过程中遇到的问题。 4. **实际案例分析**:通过一个具体...
在上面的示例中,`FOR XML PATH('report')` 表示生成 `<report>` 元素,而 `ROOT('reports')` 用于指定整个 XML 文档的根元素为 `<reports>`。 **2. 将 XML 文档导入基本表** 除了导出数据外,SQL Server 2008 还...
实现“SQL合并一列”的主要方法有两种:使用`GROUP_CONCAT`函数(MySQL特有)或`STRING_AGG`函数(SQL Server 2017及以上版本),以及使用`FOR XML PATH`来构建字符串。这里我们将重点介绍第二种方法,即利用`FOR ...
- SQL映射文件:MyBatis通过XML或注解方式定义SQL语句,将数据库操作与代码分离,提高可维护性。 - Mapper接口:用于调用SQL映射文件中的SQL,提供方法与SQL一一对应。 - SQLSession:执行SQL和获取结果的对象,...
VALUES (STUFF((SELECT * FROM YourOtherTable FOR XML PATH('')), 1, 1, '')); ``` 3. **BULK INSERT语句**:对于大量数据,可以使用BULK INSERT语句批量导入。但这种方法不直接处理XML,而是用于导入CSV或其他非...
此外,SQL Server 2000还能够检索及写入XML数据,具体方法包括使用SELECT语句和FORXML子句来检索XML数据,以及使用OPENXML行集提供程序来写入XML数据。除此之外,SQL Server 2000还通过增强的OLEDB提供程序,支持将...
本文将介绍一种利用`FOR XML PATH`来实现列转行的操作方法,并通过示例代码进行详细解释。 #### 基本概念 在Sql Server中,`FOR XML PATH`主要用于生成XML格式的数据。它可以通过指定路径表达式,将多行数据合并成...