0

我正在尝试解决以下问题,该问题导致表示数据库中计算的对象序列化。我正在尝试为报告目的执行查询,并且需要在 XML 层次结构的不同部分中的相同位置找到节点(这些来自对象的序列化string[]double[]属性)。例如我有类似的东西

...<parent>
      <Names>
        <string>Name1</string>
        <string>Name2</string>
        <string>Name3</string>
      </Names>

and

...<parent>
      <Weights>
         <double>0.5</double>
         <double>0.13</double>
         <double>0.2</double>
      </Weights>

我希望能够查询 XML blob 并为每个 XML blob 提取名称-权重对,以便我可以在 SQL 中查询,而不必反序列化对象。我可以提取名称,也可以提取权重,但是如果我将它们组合起来,它会作为交叉查询出现,因为我正在努力将它们定位匹配。我认为答案可能是创建两个视图,一个用于名称,一个用于权重,并将它们加入位置,但查询中不允许使用 position(),除非它类似于[position() < 6].

4

1 回答 1

0

通过创建 2 个单独的视图然后是聚合视图解决了这个问题。我用了

ROW_NUMBER() OVER(PARTITION BY Id ORDER BY Id) as ItemPosition

作为每个查询/视图中的列之一。然后我加入了 Id 和 ItemPosition。不确定这是否是最好的方法,但至少它匹配相关项目。

于 2011-04-04T00:54:06.597 回答