【发布时间】:2011-03-25 21:38:21
【问题描述】:
我正在尝试获取 XML 字段中的节点数。但我总是看到 0 结果。这是我的查询的样子。
DECLARE @XmlTable TABLE (XmlResult XML)
INSERT INTO @XmlTable EXECUTE [dbo].usp_GetBooks @EditionId=400
--select * from @XmlTable
SELECT
--Count number of nodes
COUNT(*) AS BooksCount
FROM
(
SELECT XmlResult FROM @XmlTable
) AS XmlTable(XmlColumn)
CROSS APPLY XmlColumn.nodes('./books/book') XmlTableFunction(XmlColumn2);
我的 XML 看起来像:
<Version number ="1">
<books>
<book>
<name> </name>
<author></author>
</book>
<book>
<name> </name>
<author></author>
</book>
</books>
</Version>
【问题讨论】:
-
XML 是什么样的?零表示您没有来自 CROSS APPLY 的行...
-
@gbn。当我从 @XmlTable 中选择 * 时,我看到 EditionId = 400 的至少 3 个书籍元素
-
您的 XML 样本无效 - 第一个
<book>应该以</book>结束(现在不是),<Version number =1>无效 - 1 需要引用:<Version number="1">
标签: xml sql-server-2008 cross-apply