FOR XML 子句的基本语法
在FOR子句中指定XML模式的基本语法为:
FOR XML mode [, XMLDATA] [, ELEMENTS][, BINARY BASE64]
参数
XML mode
指定XML模式。XML模式决定所得到的XML的形式。
mode可以是RAW、AUTO或EXPLICIT。
XMLDATA
指定应返回XML-Data架构。文档的架构被预先设计为内嵌式架构。
ELEMENTS
如果指定ELEMENTS选项,则列作为子元素返回。否则,列将映射到XML特性。只有在AUTO模式下才支持该选项。
BINARY BASE64
如果指定 BINARY Base64 选项,则查询所返回的任何二进制数据都用 base64 编码格式表示。使用RAW和EXPLICIT模式检索二进制数据时,必须指定该选项。在AUTO模式中,默认情况下将二进制数据作为引用返回。
===========================================
1.FOR XML RAW
2.FOR XML AUTO
3.FOR XML EXPLICIT
4.更改显示Tag为中文
5.同表 多层
6.异表 多层
7.处理数据及日期等的Null值
==================
数据库Person表中的数据为
personName personAge
lisi 30
zhangsan 30
1. ----------[ RAW ]---------
SELECT [personName], [personAge]
FROM [TestDB].[dbo].[person]
FOR XML RAW
结果:
<row personName="lisi " personAge="30"/>
<row personName="zhangsan " personAge="30"/>
2.----------[ AUTO ]--------
SELECT [personName], [personAge]
FROM [TestDB].[dbo].[person]
FOR XML AUTO
结果:
<TestDB.dbo.person personName="lisi " personAge="30"/>
<TestDB.dbo.person personName="zhangsan " personAge="30"/>
3.-----------[ EXPLICIT ]--------
select 1 as Tag ,null as parent
,RTRIM(personName) as [PersonBasic!1!personName]
,RTRIM(personAge) as [PersonBasic!1!personAge!xml]
FROM [TestDB].[dbo].[person]
FOR XML EXPLICIT
结果:
<PersonBasic personName="lisi">
<personAge>30</personAge>
</PersonBasic>
<PersonBasic personName="zhangsan">
<personAge>30</personAge>
</PersonBasic>
4.----- 更改显示Tag为中文 -----
select
1 as tag,
null as parent,
personName as [人员!1!姓名!xml],
personAge as [人员!1!年龄!xml]
from person
for xml EXPLICIT
结果:
<人员>
<姓名>lisi </姓名>
<年龄>30</年龄>
</人员>
<人员>
<姓名>zhangsan </姓名>
<年龄>30</年龄>
</人员>
5. ----- 同表 多层 ----
select
1 as tag,
null as parent,
rtrim(A.personName) as [人员!1!姓名],
null as [人员信息!2!年龄!xml]
from person A
union all
select
2 as tag,
1 as parent,
rtrim(A.personName),
B.personAge
from person B,person A
where A.personName=B.personName
order by [人员!1!姓名],tag
for xml EXPLICIT
结果:
<人员 姓名="lisi">
<人员信息>
<年龄>30</年龄>
</人员信息>
</人员>
<人员 姓名="zhangsan">
<人员信息>
<年龄>30</年龄>
</人员信息>
</人员>
6.-------- 异表 多层 -------
select
1 as tag,
null as parent,
rtrim(A.personName) as [人员!1!姓名],
null as [人员信息!2!年龄!xml],
null as [人员信息!2!职业!xml]
from person A
union all
select
2 as tag,
1 as parent,
rtrim(A.personName),
B.personAge,
rtrim(B.personJob)
from personInfo B,person A
where B.personName=A.personName
order by [人员!1!姓名],tag
for xml EXPLICIT
结果:
<人员 姓名="lisi">
<人员信息>
<年龄>30</年龄>
<职业>teacher</职业>
</人员信息>
</人员>
<人员 姓名="zhangsan">
<人员信息>
<年龄>30</年龄>
<职业>worker</职业>
</人员信息>
</人员>
7.-------处理数据及日期等的Null值-------
数据库Person表中的数据为
personName personAge personBirth(可为空)
lisi 30 1987-06-06
zhangsan 30
当数据表中的字段为Null值时
产生的xml文档中 将没有该节点
为了解决这一问题
在必要的时候 可以将数字及日期类型
转换为字符串类型
这样就可以接收空串
(但不知实际运用中效果如何)
SELECT
1 as TAG,
null as parent,
RTRIM(personName) AS [人员!1!姓名!xml],
RTRIM(ISNULL(CONVERT(CHAR,personAge),'')) AS [人员!1!年龄!xml],
RTRIM(ISNULL(CONVERT(CHAR(10),personBirth,120),'')) AS [人员!1!出生日期!xml]
FROM person
FOR XML EXPLICIT
结果:
<人员>
<姓名>lisi</姓名>
<年龄>30</年龄>
<出生日期>1987-06-06</出生日期>
</人员>
<人员>
<姓名>zhangsan</姓名>
<年龄></年龄>
<出生日期></出生日期>
</人员>
转自:http://www.cnblogs.com/freeliver54/archive/2007/03/22/683563.html
====================================
以通用数据库Northwind为例,下列T-SQL语句可以用XML格式输出Categories中的ID和Name列表,并为其加上根节点ROOT:
select top 1
1 as Tag,
NULL as Parent,
NULL as [ROOT!1],
CategoryID as [categories!2!CategoryID],
CategoryName as [categories!2!CategoryName]
FROM categories
UNION ALL
select
2,
1,
NULL,
CategoryID,
CategoryName
From Categories
FOR XML EXPLICIT
输出结果:
<ROOT>
<categories CategoryID="1" CategoryName="Beverages"/>
<categories CategoryID="2" CategoryName="Condiments"/>
<categories CategoryID="3" CategoryName="Confections"/>
<categories CategoryID="4" CategoryName="Dairy Products"/>
<categories CategoryID="5" CategoryName="Grains/Cereals"/>
<categories CategoryID="6" CategoryName="Meat/Poultry"/>
<categories CategoryID="7" CategoryName="Produce"/>
<categories CategoryID="8" CategoryName="Seafood"/>
</ROOT>
相关推荐
本篇文章主要介绍了SQL Server中FOR XML子句的四种不同用法:AUTO、RAW、EXPLICIT和PATH,并且通过实例对每种方式进行了分析比较。 1. RAW方式 RAW方式是将查询结果集中的每一行数据转换成一个XML元素的过程,它是...
你可以使用FOR XML RAW、FOR XML AUTO、FOR XML PATH和FOR XML EXPLICIT四种模式来生成XML。 2. OPENXML函数:用于解析XML文档并创建一个虚拟表,使得可以像处理普通表格一样处理XML数据。 3. sp_xml_...
标题所提及的"EXPLICIT模式在Transact-SQL中检索XML数据的应用"是关于如何在SQL Server 2000中利用Transact-SQL的FOR XML子句以EXPLICIT模式查询XML数据的主题。Transact-SQL是非过程化的SQL语言扩展,广泛应用于...
[ FOR { BROWSE | XML { RAW | AUTO | EXPLICIT } [ , XMLDATA ] [ , ELEMENTS ] [ , BINARY BASE64 ] } ] 参数 BROWSE 指定当查看 DB-Library 浏览模式游标中的数据时允许更新。如果表包含时间戳列(用 ...
SQL Server提供了一种强大的工具,即FOR XML子句,用于将查询结果转换为XML格式。这个功能使得数据库中的数据能够方便地与其他XML兼容的应用程序进行交互。 FOR XML子句有四种基本模式: 1. AUTO模式: AUTO模式...
描述中提到,SQL Server支持XML的方式包括其自身功能和SQLXML扩展。SQL Server的内建XML功能允许用户通过HTTP访问、模板查询、FOR XML子句和OPENXML()函数来操作XML数据。这些功能提高了数据处理的效率和灵活性,...
其中,Mode参数指定了结果XML文档的形式,可以是RAW、AUTO或EXPLICIT三者之一。RAW模式返回XML文档,每一行数据都用普通的元素封装,每一列都映射为该元素的一个属性,属性名和列名相同。 例如,以下查询语句可以...
3. EXPLICIT模式:EXPLICIT模式需要显式地指定额外的信息来确定XML元素的父子关系,这要求开发者编写特定的SQL查询。开发者需要提供额外的列来定义元素和父元素的标记号,以构建期望的XML层次结构。 使用FOR XML...
在Delphi中使用SQL Server的XML特性有很多种方式,例如使用AUTO mode、RAW mode和EXPLICIT mode等。每种方式都有其特点和优缺,具体选择哪种方式取决于实际情况。 在 AUTO mode 中,SQL Server会自动将数据转换为...
FOR XML子句有三种模式:RAW、AUTO和EXPLICIT。 1. RAW模式:在这种模式下,每个记录被看作一个普通的行元素,并包含在一个(row/)标签中,每个列的值作为属性返回。 2. AUTO模式:这种模式使用数据库的表格名作为...
FOR XML提供了三种模式:RAW、AUTO和EXPLICIT。RAW模式将每条记录转换为XML文档的一个元素,列名作为属性名;AUTO模式通过嵌套的XML元素来表现数据的结构,根据SQL查询中表的顺序和位置自动嵌套子元素;而EXPLICIT...
FOR XML有四种模式:RAW、AUTO、EXPLICIT和WITH XMLNAMESPACES,每种模式都有其特定的应用场景和优势。 SQL Server 2005还引入了XML数据的函数和方法,如SELECT ... FROM ... CROSS APPLY xml_column.nodes(),这个...
FOR XML子句提供三种模式:RAW、AUTO、EXPLICIT,这些模式分别对应不同的XML输出样式。 - RAW模式将每条记录都包含在标签中,每个字段作为元素的属性。 - AUTO模式是FOR XML的默认模式,它根据SQL查询的结构自动...
FORXML子句有多种模式,包括RAW、AUTO和EXPLICIT。RAW模式提供了一种最基本的格式,几乎未经格式化,每个数据表的行都以元素的形式呈现。AUTO模式则提供了额外的格式化选项,使得XML输出更加直观。EXPLICIT模式则...
RAW模式用于返回简单的行集,AUTO模式根据SQL查询返回结构化的XML,而EXPLICIT模式则允许用户通过明确指定的格式来构建XML。 文章还指出,XML与HTML的最大区别在于XML丰富的结构和语义,HTML主要针对表现形式。XML...
FORXML支持三种模式:Raw模式、Auto模式和Explicit模式,这三种模式各自提供了不同的方法来控制XML文档的格式。除了FORXML,SQL Server 2000还引入了OPENXML Transact-SQL关键字,允许开发人员将XML数据以行集的形式...
在SQL Server 2000中生成XML,主要依赖于`FOR XML`子句,这是一个强大的功能,允许用户将SQL查询结果转换为XML格式。这个特性极大地提升了数据交换的效率,尤其是在开发Web服务或集成不同系统时。以下是一些关于如何...
该命令能够让查询结果以XML格式展现,并且FORXML支持RAW、AUTO和EXPLICIT三种模式。RAW模式会将每一个记录包含在一个唯一的元素中,生成的文档结构可能与期望的不符,用途也相对有限。AUTO模式则更接近于期望的结构...
其中,FOR XML用于将SQL查询结果输出为XML格式的数据,它支持RAW、AUTO和EXPLICIT三种模式,分别用于不同的应用需求。而OPENXML则用于将XML文档中的数据读取出来并存入数据库中,其执行过程中需要调用系统存储过程,...