T-SQL遍历XML数据列以派生唯一的路径集

T-SQL遍历XML数据列以派生唯一的路径集,第1张

T-SQL遍历XML数据列以派生唯一的路径集

在这里,过时的方法

FROMOPENXML
可能是一个选择。检查此答案。

在此链接中,您会发现一个不时发布的功能John
Cappelletti,该功能将切碎所有XML(该功能代码下方的功劳)。

但我不确定,您真正想要实现的目标…为什么需要这条路?如果您对所有目标节点的值感兴趣,则可以执行以下 *** 作(使用进行深度搜索

//
不需要确切的
XPath

 SELECt t.value(N'(text())[1]','nvarchar(max)') FROM @xml.nodes('//target') AS A(t);

如果您真的需要 所有的一切 ,可以检查以下内容:

CREATE FUNCTION [dbo].[udf-XML-Hier](@XML xml)Returns Table As Returnwith  cte0 as (        Select Lvl       = 1  ,ID        = Cast(1 as int)   ,Pt        = Cast(NULL as int)  ,Element   = x.value('local-name(.)','varchar(150)')  ,Attribute = cast('' as varchar(150))  ,Value     = x.value('text()[1]','varchar(max)')  ,XPath     = cast(concat(x.value('local-name(.)','varchar(max)'),'[' ,cast(Row_Number() Over(Order By (Select 1)) as int),']') as varchar(max))  ,Seq       = cast(1000000+Row_Number() over(Order By (Select 1)) as varchar(max))  ,AttData   = x.query('.')   ,XMLData   = x.query('*')        From   @XML.nodes('@*') a(x)   ) A     )Select A.R1      ,R2  = IsNull((Select max(R1) From cte1 Where Seq Like A.Seq+'%'),A.R1)      ,A.Lvl      ,A.ID      ,A.Pt      ,A.Element      ,A.Attribute      ,A.XPath      ,Title = Replicate('|---',Lvl-1)+Element+IIF(Attribute='','','@'+Attribute)      ,A.Value From  cte1 AGODECLARE @xml XML='<log>  <clients>   <client>    <section name ="Apps">      <questions>      <groupone>       <question>        <target>Age</target>       </question>       <question>        <target> Height</target>       </question>       <question>        <target> Weight</target>       </question>      </groupone>      <grouptwo name = "exercise">       <wording>what is your name</wording>        <question>         <id>1</id>         <target>def</target>        </question>      </grouptwo>     </questions>    </section>   </client>  </clients> </log>'; SELECt * FROM dbo.[udf-XML-Hier](@xml);GO


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5431832.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存