从SQL Server的xml列中提取xml标记值



我正在使用SQL Server中的xml数据类型列。我知道如何通过使用query()value()函数从XML列中提取值,但我的问题略有不同。

在我的数据库表中,XML没有固定的模式。这意味着,XML标记不是固定的,在大多数记录中都是变化的。

例如:

<Types>
  <request>
    <Rollcount>34</Rollcount>
  </request>
</Types>
<Types>
  <general>
    <Rollcount>5</Rollcount>
  </general>
</Types>
<Types>
  <land>
     <Rollcount>21</Rollcount>
  <land>
</Types>

在上面的例子中,您可以看到,XML有不同的标记,如<request>, <general><land>。没有固定的模式

现在我想提取<Rollcount>的值。你能告诉我怎么做吗?

可以使用通配符。如果我们假设顶端节点总是Types, Rollcount总是第三层,那么你可以这样做:

DECLARE @XML xml ='<Types>
  <general>
    <Rollcount>5</Rollcount>
  </general>
</Types>';
SELECT X.RC.value('.','int')
FROM @XML.nodes('Types/*/Rollcount')X(RC);

,db&lt的在小提琴

最新更新