FOR XML PATH 语句的应用
大家都知道在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一些应用示例。
DECLARE @TempTable table(UserID int , UserName nvarchar(50));
insert into @TempTable (UserID,UserName) values (1,'a')
insert into @TempTable (UserID,UserName) values (2,'b')
select UserID,UserName from @TempTable FOR XML PATH
运行这段脚本,将生成如下结果:
<row>
<UserID>1</UserID>
<UserName>a</UserName>
</row>
<row>
<UserID>2</UserID>
<UserName>b</UserName>
</row>
大家可以看到两行数据生成了两个节点,修改一下PATH的参数:
select UserID,UserName from @TempTable FOR XML PATH('lzy')
再次运行上述脚本,将生成如下的结果:
<lzy>
<UserID>1</UserID>
<UserName>a</UserName>
</lzy>
<lzy>
<UserID>2</UserID>
<UserName>b</UserName>
</lzy>
可以看到节点变成,其实PATH() 括号内的参数是控制节点名称的,这样的话大家可以看一下如果是空字符串(不是没有参数)会是什么结果?
select UserID,UserName from @TempTable FOR XML PATH('')
执行上面这段脚本将生成结果:
<UserID>1</UserID>
<UserName>a</UserName>
<UserID>2</UserID>
<UserName>b</UserName>
这样就不显示上级节点了,大家知道在 PATH 模式中,列名或列别名被作为 XPath 表达式来处理,也就是说,是列的名字,这样大胆试验一下不给指定列名和别名会是怎么样?
select CAST(UserID AS varchar) + '',UserName + '' from @TempTable FOR XML PATH('')
运行上面这句将生成结果
1a2b
所有数据都生成一行,而且还没有连接字符,这样的数据可能对大家没有用处,还可以再变化一下:
select CAST(UserID AS varchar) + ',',UserName + '',';' from @TempTable FOR XML PATH('')
生成结果
1,a;2,b;
大家现在明白了吧,可以通过控制参数来生成自己想要的结果,例如:
select '{' + CAST(UserID AS varchar) + ',','"' +UserName + '"','}' from @TempTable FOR XML PATH('')
生成结果
{1,"a"}{2,"b"}
还可以生成其他格式,大家可以根据自己需要的格式进行组合。
下面是一个数据统计的应用,希望大家可以通过下面的实例想到更多的应用
DECLARE @T1 table(UserID int , UserName nvarchar(50),CityName nvarchar(50));
insert into @T1 (UserID,UserName,CityName) values (1,'a','上海')
insert into @T1 (UserID,UserName,CityName) values (2,'b','北京')
insert into @T1 (UserID,UserName,CityName) values (3,'c','上海')
insert into @T1 (UserID,UserName,CityName) values (4,'d','北京')
insert into @T1 (UserID,UserName,CityName) values (5,'e','上海')
SELECT B.CityName,LEFT(UserList,LEN(UserList)-1) FROM (
SELECT CityName,
(SELECT UserName+',' FROM @T1 WHERE CityName=A.CityName FOR XML PATH('')) AS UserList
FROM @T1 A
GROUP BY CityName
) B
生成结果(每个城市的用户名)
北京 b,d
上海 a,c,e
转自:
http://it.dianping.com/sql-for-xml-path.htm
分享到:
相关推荐
在SQL Server中,读取XML文件并对其进行处理是数据库管理员和开发者经常遇到的任务。XML作为一种通用的数据交换格式,被广泛用于存储和传输结构化数据。然而,在SQL Server 2000中,处理XML文件并不像导出数据那样...
SQLServer2005_BC.msi 文件是这个向后兼容组件的安装程序,它包含了用于在更新的SQL Server环境中模拟SQL Server 2005环境的特定库和接口。安装此组件后,用户可以继续使用那些设计时依赖SQL Server 2005特性的应用...
在处理XML数据时,SQL Server 2005提供了T-SQL扩展,如`SELECT INTO`、`OPENXML`、`FOR XML`和`WITH XMLNAMESPACES`等,这些扩展使得在SQL语句中生成、解析和修改XML变得简单易行。例如,`FOR XML`子句可以将查询...
例如,`modify()`方法允许在原地修改XML文档,而`node()`函数可以用于创建XML对象。 7. **XML数据的存储选项**:XML数据可以存储为“不规范化的”(nillable)或“规范化”的(stored as typed)。规范化模式下,...
在Microsoft SQL Server 2005中,XML最佳实施策略主要关注如何有效地利用XML数据类型和功能进行数据建模及应用。SQL Server 2005显著增强了对XML的支持,使其成为半结构化和非结构化数据管理的强大平台。 首先,...
本篇文章将详细介绍如何在VB(Visual Basic)环境中,利用ADO(ActiveX Data Objects)技术将SQL Server中的表数据转换为XML文件。 首先,我们需要了解XML(eXtensible Markup Language),它是一种用于标记数据的...
SQL Server 2005是微软推出的一款关系型数据库管理系统,它在支持XML方面具有显著的进步,特别是对Native XML Web服务的集成。本篇文章将深入探讨SQL Server 2005如何提供对Native XML Web服务的支持,以及这些特性...
4. **XML方法**:在T-SQL中,SQL Server 2005提供了一系列XML方法,如.value、.nodes和.modify,用于提取XML数据、创建XML集合以及更新XML文档。 5. **FOR XML子句**:在SELECT语句中,FOR XML子句可以将查询结果...
SQL Server 2005提供了丰富的内置函数和方法来处理XML数据,如SELECT语句中的FOR XML子句用于生成XML格式的结果集,而XML方法如.value()、.exist()和.modify()则用于读取、验证和修改XML数据。这些功能使得在SQL ...
SQLServer引入了XML数据类型,可以将XML文档直接存储为数据库表中的一个字段。这不仅简化了数据存储,还提供了对XML数据的完整性检查。XML数据类型的字段可以是动态的,即XML文档的结构不必在创建表时完全确定,这...
提及的"msft042806vxpm.wmv"文件可能是微软的网络广播录像,其中可能包含专家讲解的具体内容,涵盖了SQL Server 2005 Express的实际应用案例、性能优化技巧以及常见问题的解决方案。 总的来说,通过"SQL Server ...
SQL Server 2005引入了新的XML数据类型,允许用户直接在数据库中存储和管理XML文档。这种数据类型的引入,使得XML文档可以像其他传统数据类型一样被查询、索引和操作,从而提供了一种更自然的方式来处理XML数据。 ...
### SQL Server 2005 创建的数据库文件迁移到 SQL Server 2000 在IT行业中,数据库迁移是一项常见的任务,特别是在不同版本之间进行迁移时。本文将详细阐述如何将SQL Server 2005创建的数据库文件迁移到较早版本的...
SQL Server 2005提供了XML数据的导入和导出功能,可以方便地将XML文件与数据库进行交互。这对于数据迁移、备份和恢复等操作非常实用。 7. 示例和演示: 压缩包内的“演示代码.txt”文件可能包含了实际的示例代码,...
OpenXML 是 SQL Server 提供的一种接口,用于处理 XML 文档并将其转换为关系型数据,以便在数据库中进行操作。这个功能特别适用于处理 XML 数据,尤其是当你需要在存储过程中使用数组或其他复杂数据结构作为参数时。...
- 在SQL Server 2005中,XML被引入作为一种新的数据类型,允许在数据库中存储和管理XML文档。 - 这种新数据类型支持对XML数据进行有效的存储和检索,同时提供了对XML数据的强大处理能力。 2. **服务器端XML处理**...
3. XML索引:为了提高查询性能,SQL Server 2005还支持创建XML索引,这使得对XML数据的查询可以达到与关系数据相当的性能。 4. XQuery支持:SQL Server 2005集成了XQuery语言,这是一种专门用于查询XML数据的语言。...
5. **XML数据的导入和导出**:SQL Server 2005提供了方便的数据导入和导出工具,可以轻松地将XML文件导入到数据库中,或将数据库中的XML数据导出为文件。 6. **存储过程和XML**:在存储过程中使用XML,可以实现复杂...
根据提供的文件内容,以下是对SQL Server 2005查询XML数据优化研究的知识点的详细说明: 一、XML数据查询的重要性 随着网络技术的普及和基于Web的XML数据成为互联网上数据交换的标准,数据库系统中对XML数据的查询...
根据给定的文件标题、描述、标签以及部分内容,本文将详细介绍如何在SQL Server 2005 和 2008 中操作XML数据类型,并简要介绍与之相关的C# XML操作方法。 ### 一、SQL Server 2005/2008 XML 数据类型操作 #### 1. ...