Am nevoie de un script SQL care vor să tragă un XML string din DB [varchar(max)], inspecta, și o actualizează , dacă se potrivește o anumită situație.
Imaginați-vă că-mi xml este în următorul format:
<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>
Deci, ceea ce vreau să fac este de a actualiza toate elementele al căror nume este "level6" și care au un atribut numit "aici" a cărui valoare începe cu "acum este momentul". Deci, care ar trebui să se potrivească doar două elemente de mai sus.
Dar, asta nu e numai criteriile de selecție. Lista de opțiuni nu trebuie să conțină <option here="now" />
. Deci, care ar trebui să ne lase doar cu un singur element pentru a actualiza.
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
</options>
</level6>
La acel element, apoi m-am doriți să adăugați lipsește <option here="now" />
, astfel încât devine:
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
<option here="now" />
</options>
</level6>
Deci, rezultatul final ar trebui să fie:
<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>
Să presupunem că eu pot citi datele din DB într-un șir, și care știu cum să actualizați DB, deci nu e chiar cum să manipuleze xml string SQL (SQL Server).