我在SQL Server 2008R2的表中有一个XML列。 的XML看起来像这样(简化的示例):XQuery - 将节点作为包含XML标记的字符串获取
<root>
...
<Filters>
<Filter type="a">
<Patterns>
<Pattern>bla bla bla</Pattern>
<Pattern>kuku</Pattern>
</Patterns>
</Filter>
<Filter type="b">
<Name>Cookie</Name>
</Filter>
<Filter type="c">
<FileTypes>
<FileType>exe</FileType>
<FileType>jpg</FileType>
</FileTypes>
</Filter>
</Filters>
...
</root>
即可以有很多定义的过滤器类型,并且每一个类型的具有独特的子元素。 我想编写一个查询将返回下面的字符串:
Filter Type: a
Configuration:
<Patterns>
<Pattern>bla bla bla</Pattern>
<Pattern>kuku</Pattern>
</Patterns>
Filter Type: b
Configuration:
<Name>Cookie</Name>
Filter Type: c
Configuration:
<FileTypes>
<FileType>exe</FileType>
<FileType>jpg</FileType>
</FileTypes>
我至今是:
SELECT
xmlFiled.query(
let $nl := " "
let $space := " "
let $tab := concat($space, $space, $space, $space)
for $f in /root/.../Filters/Filter
return concat("Filter Type: ", $f/@type, $nl, "Configuration:", $nl, $tab, $f/node()[1], $nl)'
) AS Filters,
FROM Table
的问题是,$字符串转换F /节点() 1]串接在节点的所有内部元素的文本,而不保持XML标签,这样的结果我得到的是这样的:
Filter Type: a
Configuration:
bla bla blakuku
Filter Type: b
Configuration:
Cookie
Filter Type: c
Configuration:
exejpg
是否有可能实现什么,我想用这种方式?
你应该接受的答案最能满足您的需求。 – 2012-08-08 20:47:09
没有.. – user1039580 2012-08-21 06:59:40