SQL SERVER中XML查询:FOR XML指定RAW
by
admin on 2014-03-26 11:30:53 in
,
前言
在SQL SERVER中,XML查询可以指定RAW,AUTO,EXPLICIT,PATH。本文用一些实例介绍SQL SERVER中指定RAW的XML查询。
基础FOR XML查询
看实例:
with TestXml
as
(
select 1 as id,'LeeWhoeeUniversity' as name
union all
select 2,'SQLSERVER中XML查询'
union all
select 3 ,'FOR XML'
)
select id,name from testxml for xml raw,type
运行后结果:
红色字体type可选,不会影响结果,只是影响数据类型。
指定 ELEMENTS:
with TestXml
as
(
select 1 as id,N'LeeWhoeeUniversity' as name
union all
select 2,N'SQLSERVER中XML查询'
union all
select 3 ,null
)
select id,name from testxml for xml raw,elements
注意,第三行值改为NULL值进行测试。
结果:
1
LeeWhoeeUniversity
2
SQLSERVER中XML查询
3
元素name在第三行没有出现,因为是NULL值。
但是我们可以用XSINIL生成NULL值的name元素。
如:
with TestXml
as
(
select 1 as id,N'LeeWhoeeUniversity' as name
union all
select 2,N'SQLSERVER中XML查询'
union all
select 3 ,null
)
select id,name from testxml for xml raw,elements XSINIL
运行结果:
1
LeeWhoeeUniversity
2
SQLSERVER中XML查询
3
使用XMLDATA和XMLSCHEMA
XMLDATA返回描述文档结构的 XML-DATA 架构。
如:
with TestXml
as
(
select 1 as id,N'LeeWhoeeUniversity' as name
union all
select 2,N'SQLSERVER中XML查询'
union all
select 3 ,null
)
select id,name from testxml for xml raw,XMLDATA
结果:
XML SCHEMA
通过指定 XMLSCHEMA 选项,您可以针对结果请求 XSD 架构:
with TestXml
as
(
select 1 as id,N'LeeWhoeeUniversity' as name
union all
select 2,N'SQLSERVER中XML查询'
union all
select 3 ,null
)
select id,name from testxml for xml raw,XMLSCHEMA
结果:
您可以将目标命名空间 URI 指定为 FOR XML 中 XMLSCHEMA 的可选参数。
with TestXml
as
(
select 1 as id,N'LeeWhoeeUniversity' as name
union all
select 2,N'SQLSERVER中XML查询'
union all
select 3 ,null
)
select id,name from testxml for xml raw,XMLSCHEMA ('urn:http://blog.csdn.net/lihui_830501')
结果:
检索二进制数据
像XMLDATA一样,在SQL中指定BINARY BASE64。
重命名 元素
with TestXml
as
(
select 1 as id,N'LeeWhoeeUniversity' as name
union all
select 2,N'SQLSERVER中XML查询'
union all
select 3 ,null
)
select id,name from testxml for xml raw ('myrow')
结果:
指定ELEMENTS的情况类同。
为 FOR XML 生成的 XML 指定根元素
with TestXml
as
(
select 1 as id,N'LeeWhoeeUniversity' as name
union all
select 2,N'SQLSERVER中XML查询'
union all
select 3 ,null
)
select id,name from testxml for xml raw,root('myroot')
结果:
查询 XML 类型的列
[sql] view plaincopy
declare @xml table(xid int,xname varchar(50),xmlcol xml);
insert into @xml select 1,'第一行','
'
insert into @xml select 2,'第二行','
'
select xid,xname,xmlcol.query('/myroot') from @xml for xml raw
结果:
总结
以上对指定RAW的XML查询就介绍完了,下一篇文章将继续用实例介绍SQL SERVER中的XML查询:指定AUTO查询。
评论