Potřebuji SQL skript, který bude tahat XML řetězec z DB [varchar(max)], zkontrolujte ji, a aktualizovat ji, pokud to odpovídá konkrétní situaci.
Představte si, že můj xml je v následujícím formátu:
<root>
<level1>
<level2>
<level3 />
<level3 />
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="this one is not of interest">
<options>
<option this="that" />
<option me="you" />
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="now is the time for ABC">
<options>
<option this="that" />
<option me="you" />
<option here="now" />
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
</root>
Takže, co chci udělat, je aktualizovat všechny prvky, jejichž jméno je "level6" a, které mají atribut s názvem "here", jehož hodnota začíná s "nyní je čas". Tak, že by se zápas jen dva prvky výše.
Ale to není jediná kritéria výběru. Seznam možností nesmí obsahovat <option here="now" />
. Tak, že by nás opustit jen s jedním prvkem aktualizovat.
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
</options>
</level6>
Na tento prvek, pak jsem chtěl přidat chybějící <option here="now" />
,, tak, že se stává:
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
<option here="now" />
</options>
</level6>
Takže, konečný výsledek by měl být:
<root>
<level1>
<level2>
<level3 />
<level3 />
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
<option here="now" /> // <- this one new
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="this one is not of interest">
<options>
<option this="that" />
<option me="you" />
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="now is the time for ABC">
<options>
<option this="that" />
<option me="you" />
<option here="now" />
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
</root>
Předpokládejme, že mohu číst data z DB do řetězce, a že vím, jak aktualizovat DB, tak je to opravdu, jak manipulovat s xml řetězec SQL (SQL Server).