【发布时间】:2012-03-02 22:44:29
【问题描述】:
假设我的数据库中有以下两段 XML
<!-- XML 1 -->
<pairs>
<item key="a">xml 1 a value</item>
<item key="b">xml 1 b value</item>
<item key="c">xml 1 c value</item>
</pairs>
<!-- XML 2 -->
<pairs>
<item key="c">xml 2 c value</item>
<item key="d">xml 2 d value</item>
<item key="e">xml 1 e value</item>
</pairs>
此数据使用XML 数据类型存储在两个单独的表中,此外,此 XML 列链接到描述预期 xml 格式的架构,例如
[PairData] [xml](CONTENT [foo].[Pairs]) NULL
在存储过程/函数中,我想将这两个 XML 结构合并为以下内容:
<pairs>
<item key="a">xml 1 a value</item>
<item key="b">xml 1 b value</item>
<item key="c">xml 2 c value</item>
<item key="d">xml 2 d value</item>
<item key="e">xml 2 e value</item>
</pairs>
所以,我们从第一段 xml 中获取了项目:
a, b
我们从第二段 xml 中获取了项目:
c, d, e
请注意,这两条 XML 有一个共同的项目,其键为:
c
在这种情况下,来自 xml 2 的值应该在合并的 xml 中使用(丢弃来自 xml 1 的值)。另一种情况是 XML 1 或 2 可能为 NULL,因此合并过程应该处理这个并简单地返回另一个。或者两者都可能是 NULL,在这种情况下返回 NULL。
顺便说一句,在我们当前的实现中,我们从数据库返回 XML 文档并在代码中进行合并。但是,我们希望在数据库中完成此合并,因为多个不相关的进程正在调用此过程。
【问题讨论】:
-
答案取决于数据存储。 (例如,您的来源是表格、xml 列还是字符串)。如果您能提供更多信息,那就太好了。
-
为评论干杯,问题已更新。