Ho bisogno di uno script SQL per estrarre una stringa XML dal DB [varchar(max)], controllare e aggiornare se si inserisce una specifica situazione.
Immaginate che il mio xml è il seguente formato:
<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>
Così, quello che voglio fare è aggiornare tutti gli elementi il cui nome è "level6" e che hanno un attributo chiamato "qui", il cui valore inizia con "ora è il momento". Quindi, che dovrebbe corrispondere a due soli elementi di cui sopra.
Ma, non è l'unico criterio di selezione. L'elenco delle opzioni non devono contenere <option here="now" />
. Quindi, che dovrebbe lasciare con un solo elemento di aggiornamento.
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
</options>
</level6>
A tale elemento, quindi, vorrei aggiungere i mancanti <option here="now" />
, in modo che diventi:
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
<option here="now" />
</options>
</level6>
Così, il risultato finale dovrebbe essere:
<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>
Si supponga che sono in grado di leggere i dati dal DB in una stringa, e che io so come aggiornare il DB, quindi è davvero come manipolare la stringa xml in SQL (SQL Server).