鉴于以下XML,检索SubscriberID为空的SubscriberStatus的SQL XQuery是什么?鉴于XML存储在具有XML数据类型的列中。
<ObjectEntry>
<Key>Key1</Key>
<DicValue>
<ObjectEntry>
<Key>SubscriberStatus</Key>
<Value xsi:type="xsd:string">Active</Value>
<DicValue />
</ObjectEntry>
<ObjectEntry>
<Key>SubscriberID</Key>
<Value xsi:type="xsd:string" />
<DicValue />
</ObjectEntry>
</DicValue>
</ObjectEntry>
答案 0 :(得分:1)
试试这个:
如果$ node保存你的xml片段,那么
$ node // ObjectEntry [DicValue / ObjectEntry [Key eq“SubscriberStatus”]和DicValue / ObjectEntry [Key eq“SubscriberID”] [Value ne“”]]
将返回非空SubscriberIDs
的ObjectEntry父级答案 1 :(得分:1)
这是一个简单的XPath表达式,不需要真正的XQuery。 XPath是XQuery的一个子集。鉴于您需要SubscriberStatus的<Value/>
元素,您可以获得如下所示:
//ObjectEntry/DicValue[ObjectEntry[Key = "SubscriberID"]/Value = ""]/ObjectEntry[Key = "SubscriberStatus"]/Value
这将获取所有具有空SubscriberID的ObjectEntries,然后导航到SubscriberStatus。如果您只想要实际的字符串,可以附加/string()
答案 2 :(得分:0)
感谢您的建议!不幸的是他们并没有按照我的要求行事,但确实帮助我获得了正确的语法。这是一个有效的解决方案。
select Request.query('//ObjectEntry/DicValue/ObjectEntry[Key = "SubscriberStatus"]/Value') as SubscriberStatus
from RequestLog
where
Request.exist('//ObjectEntry/DicValue[ObjectEntry[Key = "SubscriberID" and Value = ""]]') = 1