ich eine Spalte in einer Tabelle, die XML enthält, die wie folgt aussiehtSQL Server 2008 Suchen und Ersetzen XML-Knotenwerte
<memberHours type="TeamHours[]">
<item>
<member type="String">Bill</member>
<hours type="Decimal">0.0</hours>
</item>
<item>
<member type="String">John</member>
<hours type="Decimal">0.0</hours>
</item>
<item>
<member type="String">Sally</member>
<hours type="Decimal">0.0</hours>
</item>
</memberHours>
Ich brauche alle Zeilen in der Lage sein zu finden, wo das Element gleich zu "John" und dann zu "John" durch "Jon". Da meine XML-Datei in einer nvarchar (max) -Spalte gespeichert ist, schreibe ich eine Funktion, die die Spalte in eine xml-Variable umwandelt, die ich dann verwenden kann. Was ich kann nicht herausfinden, wie zu finden, die ‚Item‘ Spiele und darüber, wie man nur, dass ein Wert (dh nur ‚John‘)
ich auf SQL Server bin 2008
Da ich will nicht eine Schleife durch alle Reihen in meiner Tabelle , wie kann ich nur die Zeilen finden, in denen eines der Mitglieder John ist? –
Da ich sehen kann, dass ich das wieder verwenden werde, kann ich das set @ xml.modify ersetzen ('replace value von (/ memberHours/item [member = sql: variable ("@ AlterName")]/member/text()) [1] mit sql: variable ("@ NewName") ')? –
Bitte beachten Sie die aktualisierte Lösung. Dadurch wird die gesamte Tabelle durchlaufen und alle übereinstimmenden Elemente ersetzt. Ich bin mir nicht sicher, ob es einen besseren Set-basierten Ansatz dafür gibt. –