在将
XML分解为sql Server视图中的行时,如何返回元素序列?
样本输入:
<ol> <li>Smith</li> <li>Jones</li> <li>brown</li> </ol>
期望的输出:
Sequence Name -------- ----------- 1 Smith 2 Jones 3 brown
现有观点:
CREATE VIEW OrderedList AS SELECT [Sequence] = CAST(NULL AS int) -- Todo: Get ordinal position [Name] = b.b.value('.','nvarchar(max)') FROM ( SELECT a = CAST('<ol><li>Smith</li><li>Jones</li><li>brown</li></ol>' AS xml) ) a CROSS APPLY a.a.nodes('/ol/li') b (b)
您可以在xml节点上使用row_number().
CREATE VIEW OrderedList AS SELECT [Sequence] = ROW_NUMBER() OVER(ORDER BY b.b),[Name] = b.b.value('.','nvarchar(max)') FROM ( SELECT a = CAST('<ol><li>Smith</li><li>Jones</li><li>brown</li></ol>' AS xml) ) a CROSS APPLY a.a.nodes('/ol/li') b (b)
参考:Uniquely Identifying XML Nodes with DENSE_RANK 由Adam Machanic.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。