SQL中forXML语句用法总结_sql语句初学使用总结
SQL中forXML语句用法总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“sql语句初学使用总结”。
-------raw模式:raw模式将查询结果集中的每一行转换为带有通用标识符row或可能提供元素名称的xml元素。(将查询结果集中的每一行转换为row元素的属性或row元素的子无素)-------------行集中非Null的每列值都将映射为row元素的一个属性--------------------------
select top 10 *
from mixtureMeasureMonitor
for xml raw
---将elements指令添加到for xml子句,则行集中非null的每列值都将映射为row元素的一个子元素
-----------
select top 10 *
from mixtureMeasureMonitor
for xml raw,elements
----在指定elements指令的同时指定xsinil选项,则将行集中为null的每例值映射为具有属性xsi:nil=“true”的一个元素
---------------------------
select top 10 *
from mixtureMeasureMonitor
for xml raw,elements XSINIL
-Auto模式根据查询确定返回的xml的形式--------------
select pmm.id,pmm.ppId,pp.MixPropNo,pmm.criterion
from mixtureMeasureMonitor as pmm inner join
produceProportion as pp on pp.id=pmm.ppid and pp.cOrgID=pmm.cOrgID tOption as tp on tp.cValue=pmm.Criterion inner join
where tp.ckey='Criterion '
for xml auto
select
pmm.id,pp.MixPropNo,pmm.ppId,pmm.criterion,pmm.temperatureMark,pmm.remark
from mixtureMeasureMonitor as pmm inner join
produceProportion as pp on pp.id=pmm.ppid and pp.cOrgID=pmm.cOrgID tOption as tp on tp.cValue=pmm.Criterion inner join
where tp.ckey='Criterion '
for xml auto,elements xsinil
-----------------explicit模式:使用RAW和AUTO模式不能很好地控制从查询结果生成的XML的形状。但是,对于要从查询结果生成的XML,EXPLICIT模式会提供非常好的灵活性-----------------------
select
pp.MixPropNo,pmm.id,pmm.ppId,pmm.criterion,pmm.temperatureMark,pmm.remark
from mixtureMeasureMonitor as pmm inner join
produceProportion as pp on pp.id=pmm.ppid and pp.cOrgID=pmm.cOrgID tOption as tp on tp.cValue=pmm.Criterion inner join
where tp.ckey='Criterion '
for xml explicit
-------------------------OPENXML语句,对XML文件进行查询,然后返回指定的XML中的结果集数据---------------------------
/*openxml(idoc int [in],rowpattern nvarchar[in],[flags byte [in]])
[WITH(SchemaDeclaration|TableName)]
Idoc:XML文档的内部表示形式的文档句柄
RowPattern:XPath模式,用来标识要作为行处理的节点
Flags:指示应在XML数据和关系行集间使用映射,以及应如何填充溢出列
SchemaDeclaration:窗体的架构定义
TableName:如果具有所需架构的表已经存在且不要求列模式,则为给定的表名*/ DECLARE @idoc int
declare @doc varchar(2000)
set @doc='
OrderDate=“2007-07-04T00:00:00”>
OrderDate=“2007-08-16T00:00:00”>
'
EXEC sp_xml_preparedocument @idoc output,@doc
select *
from openxml(@idoc,'/ROOT/Customer',1)
with(CustomerID varchar(10),ContactName varchar(20))/*path()括号内的参数是控制节点名称的,不指定括号时控制节点默认是row。rooot选项来添加单个顶级元素*/
------------------path选项不带()时,默认控制节点是row,其他字段元素都是row元素的子元素----------
select ID ,name
from MtrlBaseName
for xml path
--------------------------ID,name是product标签的子标签---------------select ID ,name
from MtrlBaseName
for xml path('Product'),root('ProductExport')
------------------ID是Product标签的属性,name是Product标签的内容-----------------------------
select ID [@ID],name as [*]
from MtrlBaseName
for xml path('Product'),root('ProductExport')
------------------ID,name是Product标签的属性
----
select ID [@ID],name as [@name]
from MtrlBaseName
for xml path('Product'),root('ProductExport')