[英]SQL get value from XML in tag, by tag value
我有以下 XML:
<Main>
<ResultOutput>
<Name>TEST1</Name>
<Value>D028</Value>
</ResultOutput>
<ResultOutput>
<Name>TEST2</Name>
<Value>Accept</Value>
</ResultOutput>
<ResultOutput>
<Name>TEST3</Name>
<Value />
</ResultOutput>
</Main>
我想要的是獲取 SQL 中<value>
標記的值。
基本上想說 get <value>
其中<Name>
的值是TEST1
,例如
這是我目前擁有的,但這取決於 XML 標簽的 position:
XMLResponse.value(Main/ResultOutput/Value)[5]', nvarchar(max)')
做到這一點的最好方法不是放置額外的where.value
子句,而是直接在 XQuery 中進行。
使用[nodename]
按子節點過濾,你甚至可以嵌套這樣的謂詞。 text()
獲取節點的內部文本:
XMLResponse.value('(/Main/ResultOutput[Name[text()="TEST1"]]/Value/text())[1]', 'nvarchar(max)')
以下是在您的問題中使用示例 XML 的示例。 您需要擴展它以添加命名空間聲明和正確的 xpath 表達式,這些表達式可能出現在您的實際 XML 中,正如您的查詢嘗試所建議的那樣。
SELECT ResultOutput.value('Value[1]', 'nvarchar(100)')
FROM @xml.nodes('Main/ResultOutput') AS Main(ResultOutput)
WHERE ResultOutput.value('Name[1]', 'nvarchar(100)') = N'TEST1';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.