gpt4 book ai didi

sql - 用于Xpath查询的SQL Xml

转载 作者:行者123 更新时间:2023-12-03 16:14:11 24 4
gpt4 key购买 nike

尝试通过Xpath查询返回XML字段的值。

这是XML快照中的样子。

<?xml version="1.0" encoding="utf-16"?>  
<ArrayOfCustomProperty xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CustomProperty>
<DeveloperId>Test123</DeveloperId>
<Key>AgreedToTerms</Key>
<Value>True</Value>
</CustomProperty>
<CustomProperty>
<DeveloperId>Test456</DeveloperId>
<Key>ValidForLoyaltyPoints</Key>
<Value>False</Value>
</CustomProperty>
</ArrayOfCustomProperty>


(对格式不良的XML ...感到抱歉,... StackOverflows RCE呈现它时出现问题。ArrayOfCustomProperty最后关闭,由于某些原因而没有显示)

这个查询对我有用。

  SET @return = CAST(CAST(@xmlData AS xml).query('ArrayOfCustomProperty/CustomProperty/Key[text()=sql:variable("@key")]/../Value/text()') AS nvarchar(255))


它允许我有一个函数,其中参数为需要搜索的@xmlData和@key。我需要有另一个函数(或可以对此函数进行修改),在这里我也可以搜索[DeveloperId]节点,因此第三个参数将作为@devId传递。我已经尝试了很多不同的方法,但是还没有任何工作适合我。我想要一个查询,当使用相同的结构(如果可能)显示[DeveloperId]和[Key]时,可以获取[Value],该结构与当前Xpath查询的工作方式相同。

在此先感谢您的帮助。

最佳答案

您可以将xml数据转换为表,然后处理该表。这样的事情。

declare @xml xml=N'<?xml version="1.0" encoding="utf-16"?>  
<ArrayOfCustomProperty xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CustomProperty>
<DeveloperId>Test123</DeveloperId>
<Key>AgreedToTerms</Key>
<Value>True</Value>
</CustomProperty>
<CustomProperty>
<DeveloperId>Test456</DeveloperId>
<Key>ValidForLoyaltyPoints</Key>
<Value>False</Value>
</CustomProperty>
</ArrayOfCustomProperty>',
@key varchar(50)

;with cte as (
select t.v.value('DeveloperId[1]','varchar(50)') DeveloperId,
t.v.value('Key[1]','varchar(50)') [Key],
t.v.value('Value[1]','varchar(50)') [Value]
from @xml.nodes('ArrayOfCustomProperty/CustomProperty') t(v)
)
select * from cte
where [Key] = @key

关于sql - 用于Xpath查询的SQL Xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56224104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com