在SQL表中查找XML元素的数量

时间:2014-04-24 13:53:07

标签: sql sql-server xquery

我在ID (Primary key)中有XML data typeSQL Server 2008的表格。

我需要帮助才能找到其关联的XML有超过500个元素的ID(父母和孩子将被视为2个独立的元素)

我在该表中有大约15,000条记录。

2 个答案:

答案 0 :(得分:1)

这是一个非常有趣的问题。我建议你创建一个函数,它返回当前节点的子计数,然后将每个子节点重新分配为root(@ x1),并在它变为0(不再是子节点)时调用自身,如下例所示,但是并发。 找到这篇文章,它展示了如何遍历XML http://blog.bodurov.com/How-to-Traverse-Hierarchical-XML/

DECLARE    @x1 XML
SELECT @x1 = '
<Employees>
  <Employee>
    <Name>Jacob</Name>
    <Number>1001</Number>
  </Employee>
  <Employee>
    <Name>Bob</Name>
    <Number>1002</Number>
  </Employee>
  <Employee>
    <Name>Steve</Name>
    <Number>1003</Number>
  </Employee>
    </Employees>'

SELECT
    @x1.value('count(/*/*)','INT') AS ChildrenOfRootElement

抱歉,我没有SQL Management studio atm,因此无法测试或生成功能。

答案 1 :(得分:0)

select ID
from YourTable 
where XMLCol.value('count(//*)', 'int') > 500

SQL Fiddle