获取XML字段XQuery SQL Server 2008中的节点数

前端之家收集整理的这篇文章主要介绍了获取XML字段XQuery SQL Server 2008中的节点数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试获取 XML字段中的节点数.但我总是看到0的结果.这是我的查询的样子.
  1. DECLARE @XmlTable TABLE (XmlResult XML)
  2. INSERT INTO @XmlTable EXECUTE [dbo].usp_GetBooks @EditionId=400
  3. --select * from @XmlTable
  4. SELECT
  5. --Count number of nodes
  6. COUNT(*) AS BooksCount
  7. FROM
  8. (
  9. SELECT XmlResult FROM @XmlTable
  10. ) AS XmlTable(XmlColumn)
  11. CROSS APPLY XmlColumn.nodes('./books/book') XmlTableFunction(XmlColumn2);

我的XML看起来像:

  1. <Version number ="1">
  2. <books>
  3. <book>
  4. <name> </name>
  5. <author></author>
  6. </book>
  7. <book>
  8. <name> </name>
  9. <author></author>
  10. </book>
  11. </books>
  12. </Version>
我认为你的XPath表达式是错误的 – 尝试这样做:
  1. DECLARE @XmlTable TABLE (XmlResult XML)
  2.  
  3. INSERT INTO @XmlTable EXECUTE [dbo].usp_GetBooks @EditionId=400
  4.  
  5. SELECT
  6. COUNT(*) AS BooksCount
  7. FROM
  8. (SELECT XmlResult FROM @XmlTable) AS XmlTable(XmlColumn)
  9. CROSS APPLY
  10. XmlColumn.nodes('/Version/books/book') XmlTableFunction(XmlColumn2)

甚至更简单:

  1. DECLARE @XmlTable TABLE (XmlResult XML)
  2.  
  3. INSERT INTO @XmlTable EXECUTE [dbo].usp_GetBooks @EditionId=400
  4.  
  5. SELECT
  6. XmlResult.value('count(/Version/books/book)','int')
  7. FROM
  8. @XmlTable

猜你在找的XML相关文章