`
q12344566789
  • 浏览: 31889 次
  • 来自: 青岛
文章分类
社区版块
存档分类
最新评论

FOR XML PATH

 
阅读更多

转自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 语句的应用

    ### SQL Server FOR XML PATH 语句的应用 #### 概述 在数据库操作中,将查询结果转换为XML格式的需求十分常见。SQL Server 提供了多种方法来生成XML数据,其中`FOR XML PATH`是最常用的方法之一。通过使用`FOR XML...

    sqlserver FOR XML PATH 语句的应用

    `FOR XML PATH` 是 SQL Server 中用于构造 XML 数据的一个强大工具。通过这个语句,你可以将 SQL 查询结果转换成 XML 格式,便于数据交换、存储或者进一步处理。以下是对 `FOR XML PATH` 语句的详细解释和应用示例。...

    ACCESS 分组合并

    由于ACCESS 没有oracle的listagg函数,也没有sql server这种 for xml path 这种, 要实现分组合并需要自定义一个函数,理解了 for xml path 这个就很好理解了。

    FOR XML子句在SQL Server中的用法比较.pdf

    本篇文章主要介绍了SQL Server中FOR XML子句的四种不同用法:AUTO、RAW、EXPLICIT和PATH,并且通过实例对每种方式进行了分析比较。 1. RAW方式 RAW方式是将查询结果集中的每一行数据转换成一个XML元素的过程,它是...

    access数据库数据转换为xml文件

    在IT领域,Access数据库和XML(可扩展标记语言)文件都是常见的数据存储和交换格式。Access是Microsoft开发的关系型数据库管理系统,适用于小型到中型企业,用于存储和管理结构化数据。而XML则是一种通用的数据交换...

    SQL_Server_2008中XML应用

    在这个例子中,`FOR XML PATH('')` 指定了 PATH 模式,并且使用了空字符串 `' '` 来指示每个列名作为路径的一部分,而 `ROOT('report')` 则指定了整个 XML 文档的根元素。 #### 小结 通过上述介绍,可以看出 SQL ...

    sqlserver to XML

    你可以使用FOR XML RAW、FOR XML AUTO、FOR XML PATH和FOR XML EXPLICIT四种模式来生成XML。 2. OPENXML函数:用于解析XML文档并创建一个虚拟表,使得可以像处理普通表格一样处理XML数据。 3. sp_xml_...

    sql 操作xml

    SELECT EmployeeID '@id', FirstName 'fn', LastName 'ln' FROM Employees FOR XML PATH('Employee') ``` 这会创建一个XML,其中每个`Employee`元素包含`id`、`fn`和`ln`三个属性,分别对应`EmployeeID`、`...

    SQL字符处理

    ### SQL字符处理:利用FOR XML PATH进行数据拼接 在SQL Server中,有时我们需要将同一组内的多个字段值拼接成一个字符串。这种需求常见于报告生成、数据汇总等场景。本文将详细介绍如何使用`FOR XML PATH`方法来...

    sql 输出xml

    首先,我们来看下`FOR XML PATH`函数的使用,这是在SQL Server中用来将查询结果输出为XML格式的一个重要工具。通过指定`PATH`子句,你可以控制输出的XML结构。如果省略`PATH`子句,那么输出的XML将是一个单节点,...

    SQL Server 将某一列的值拼接成字符串.docx

    这个过程可以通过几种不同的方法来实现,其中包括使用FOR XML PATH子句和CONCAT函数。我们将深入探讨这些方法,并结合提供的示例进行解释。 首先,`FOR XML PATH('')` 是SQL Server中用于生成XML的一种方式,但在...

    “列名创建日期包含FOR XML所要求的无效XML标识符;''(0x0020)是出现错误的第一个字符。”

    通过以上方法,我们可以成功地使用FOR XML PATH生成XML数据,即使列名包含不合法的XML标识符。在实际应用中,为了避免类似问题,建议在设计数据库时遵循良好的命名规范,避免使用特殊字符或空格作为列名。同时,对已...

    SQL 数据行列转换

    2. **FOR XML PATH() 函数的应用**:详细解释FOR XML PATH()函数在行列转换中的作用及其实现方法。 3. **动态SQL的使用**:探讨如何通过动态SQL来解决行列转换过程中遇到的问题。 4. **实际案例分析**:通过一个具体...

    SQLServer中XML应用

    在上面的示例中,`FOR XML PATH('report')` 表示生成 `&lt;report&gt;` 元素,而 `ROOT('reports')` 用于指定整个 XML 文档的根元素为 `&lt;reports&gt;`。 **2. 将 XML 文档导入基本表** 除了导出数据外,SQL Server 2008 还...

    SQL合并一列

    实现“SQL合并一列”的主要方法有两种:使用`GROUP_CONCAT`函数(MySQL特有)或`STRING_AGG`函数(SQL Server 2017及以上版本),以及使用`FOR XML PATH`来构建字符串。这里我们将重点介绍第二种方法,即利用`FOR ...

    MyBatis用法

    - SQL映射文件:MyBatis通过XML或注解方式定义SQL语句,将数据库操作与代码分离,提高可维护性。 - Mapper接口:用于调用SQL映射文件中的SQL,提供方法与SQL一一对应。 - SQLSession:执行SQL和获取结果的对象,...

    XML文件数据导入到数据库中

    VALUES (STUFF((SELECT * FROM YourOtherTable FOR XML PATH('')), 1, 1, '')); ``` 3. **BULK INSERT语句**:对于大量数据,可以使用BULK INSERT语句批量导入。但这种方法不直接处理XML,而是用于导入CSV或其他非...

    SQL Server 2000 XML技术及应用.pdf

    此外,SQL Server 2000还能够检索及写入XML数据,具体方法包括使用SELECT语句和FORXML子句来检索XML数据,以及使用OPENXML行集提供程序来写入XML数据。除此之外,SQL Server 2000还通过增强的OLEDB提供程序,支持将...

    SqlServer列转行的另一种方式

    本文将介绍一种利用`FOR XML PATH`来实现列转行的操作方法,并通过示例代码进行详细解释。 #### 基本概念 在Sql Server中,`FOR XML PATH`主要用于生成XML格式的数据。它可以通过指定路径表达式,将多行数据合并成...

Global site tag (gtag.js) - Google Analytics