簡體   English   中英

SQL 從標簽中的 XML 獲取值,按標簽值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM