J'ai besoin d'un script SQL qui sera à tirer d'une chaîne XML à partir de la DB [varchar(max)], l'inspecter et de le mettre à jour si elle s'adapte à une situation spécifique.
Imaginez que mon xml est le format suivant:
<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>
Donc, ce que je veux faire est de mettre à jour tous les éléments dont le nom est "level6", et qui ont un attribut appelé "ici" dont la valeur commence par "c'est maintenant le temps". Alors, qui doit correspondre à seulement deux éléments ci-dessus.
Mais, ce n'est pas le seul critère de sélection. La liste des options ne doit pas contenir <option here="now" />
. Donc, ce qui devrait nous laisser avec juste un élément à mettre à jour.
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
</options>
</level6>
Pour cet élément, je veux ajouter le manque <option here="now" />
, alors cela devient:
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
<option here="now" />
</options>
</level6>
Donc, le résultat final devrait être:
<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>
Supposons que je puisse lire les données de la DB dans une chaîne, et que je sais comment mettre à jour la DB, donc c'est vraiment la façon de manipuler la chaîne xml dans SQL (SQL Server).