设为首页 加入收藏

TOP

SQLSERVER中XML查询:FORXML指定EXPLICIT(三)
2014-11-23 22:21:07 来源: 作者: 【 】 浏览:30
Tags:SQLSERVER XML 查询 FORXML 指定 EXPLICIT
NT会实体化数据即对特殊字符进行转义,XML则不会。 with TestXmlExplicit
as
(
select 1 as tag,null as parent,N'衣服' as [clothes!1!category],null as [subcategory!2!name!element],null as [subcategory!2!name2!xml]
union all
select 2,1,null,N'女装',N'男装'
)
select * from TestXmlExplicit for xml explicit

结果:

<b>女装</b>

男装



上面可以看到女装部分被转义,男装部分没有。

指定CDATA

with TestXmlExplicit
as
(
select 1 as tag,null as parent,N'衣服' as [clothes!1!category],null as [subcategory!2!name!cdata]
union all
select 2,1,null,N'女装'
)
select * from TestXmlExplicit for xml explicit

结果:

女装]]>

指定XMLTEXT

with TestXmlExplicit
as
(
select 1 as tag,null as parent,N'衣服' as [clothes!1!category],null as [subcategory!2!NAME],null as [subcategory!2!!XMLTEXT]
union all
select 2,1,null,N'女装',N'女装补充'
)
select * from TestXmlExplicit for xml explicit
结果:
女装补充

因为对于红色字体 列没有指定 AttributeName,而指定了xmltext 指令,所以 元素中的属性被追加到包含它的 元素(即subcategory!2!NAME,不是clothes!1!category)的属性列表中。

因为 元素中的 NAME属性与相同元素级上检索到的 NAME 属性冲突,所以忽略 元素中的此属性,即使 NAME 为 NULL 也是如此。通常情况下,属性将覆盖溢出中具有相同名称的属性。但是id属性没有冲突,所以保留。

再看另一种情况: with TestXmlExplicit
as
(
select 1 as tag,null as parent,N'衣服' as [clothes!1!category],null as [subcategory!2!NAME],null as [subcategory!2!!XMLTEXT]
union all
select 2,1,null,N'女装',N'子元素'
)
select * from TestXmlExplicit for xml explicit

XMLTEXT列值包含了子元素name, 因此当前元素追加到子元素则作为子元素追加到,结果:

子元素




再看: with TestXmlExplicit
as
(
select 1 as tag,null as parent,N'衣服' as [clothes!1!category],null as [subcategory!2!NAME],null as [subcategory!2!subname!XMLTEXT]
union all
select 2,1,null,N'女装',N'子元素'
)
select * from TestXmlExplicit for xml explicit

如果为XMLTEXT指定AttributeName(如subname),则的属性追加到,然后作为子元素追加到,结果:



子元素


总结

以上对指定EXPLICIT的XML查询就介绍完了,下一篇文章将继续用实例介绍SQL SERVER中的XML查询:指定PATH查询。
SQL SERVER中XML查询:FOR XML指定RAWSQL SERVER中XML查询:FOR XML指定AUTO
SQL SERVER中XML查询:FOR XML指定EXPLICIT
SQL SERVER中XML查询:FOR XML指定PATH关于XML类型,请参考:http://blog.csdn.net/leewhoee/article/details/8571286关于XML索引,请参考:http://blog.csdn.net/leewhoee/article/details/8579743

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇PostgreSQL位图索引 下一篇sql查询重复记录、删除重复记录方..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: