sql-server – 在SQL Server中的XML文档中查找节点顺序
发布时间:2020-12-12 16:33:45 所属栏目:MsSql教程 来源:网络整理
导读:如何找到 XML文档中节点的顺序? 我有一个这样的文件: value code="1" value code="11" value code="111"/ /value value code="12" value code="121" value code="1211"/ value code="1212"/ /value /value/value 我试图把这个东西放到一个定义如下的表中 CR
如何找到
XML文档中节点的顺序?
我有一个这样的文件: <value code="1"> <value code="11"> <value code="111"/> </value> <value code="12"> <value code="121"> <value code="1211"/> <value code="1212"/> </value> </value> </value> 我试图把这个东西放到一个定义如下的表中 CREATE TABLE values( code int,parent_code int,ord int ) 保留XML文档中的值的顺序(它们不能被其代码排序).我想能说 SELECT code FROM values WHERE parent_code = 121 ORDER BY ord 结果应该是确定的 code 1211 1212 我努力了 SELECT value.value('@code','varchar(20)') code,value.value('../@code','varchar(20)') parent,value.value('position()','int') FROM @xml.nodes('/root//value') n(value) ORDER BY code desc 但它不接受position()函数(‘position()’只能在谓词或XPath选择器中使用). 我想这可能有一些方法,但是怎么样? 解决方法您可以通过对每个节点之前的兄弟节点数进行计数来模拟position()函数:SELECT code = value.value('@code','int'),parent_code = value.value('../@code',ord = value.value('for $i in . return count(../*[. << $i]) + 1','int') FROM @Xml.nodes('//value') AS T(value) 这是结果集: code parent_code ord ---- ----------- --- 1 NULL 1 11 1 1 111 11 1 12 1 2 121 12 1 1211 121 1 1212 121 2 怎么运行的: > (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读