Как удалить узлы, содержащие несколько атрибутов, из переменной XML в SQL - PullRequest
0 голосов
/ 22 марта 2019

У меня есть некоторый XML, передаваемый в хранимую процедуру SQL, которая выглядит следующим образом:

<root>
    <category>
        <property id="blah" otherID="blahblah" year="2015">
        <property id="blah" otherID="notBlahBlah" year="2015">
    </category>
</root>

Я хочу удалить из этого узел свойства, используя SQL на основе нескольких атрибутов узла. Например, скажем, я хотел удалить свойство с id = "blah" и otherID = "blahblah". Как я мог это сделать? Спасибо.

Это код, который я до сих пор основывал на своем наилучшем предположении о том, как это сделать, прочитав некоторую документацию по XQUERY, но он работает неправильно:

DECLARE @XML AS XML
SET @XML = '<root>
               <category>
                   <property id="blah" otherID="blahblah" year="2015">
                   <property id="blah" otherID="notBlahBlah" year="2015">
               </category>
            </root>'

UPDATE @XML.nodes('/root/category/property') 
SET data.modify('delete /root/category/property[id="blah", otherID="blahblah"]')    

1 Ответ

1 голос
/ 22 марта 2019
DECLARE @XML AS XML

SET @XML = '
<root>
               <category>
                   <property id="blah" otherID="blahblah" year="2015"/>
                   <property id="blah" otherID="notblahblah" year="2015"/>
               </category>
            </root>'

SET @XML.modify('delete /root/category/property[@id="blah" and @otherID="blahblah"]')

SELECT @XML
...