2010-06-17 3 views
1

J'ai une structure XML dans une colonne XML sur une table SQL Server comme suit:XML Mise à jour en utilisant l'attribut pour identifier la valeur dans le serveur SQL

<Customizations> 
<Customization name="OtherValue"> 
    <value>Test</value> 
</Customization> 
. . . . 
<Customization name="Year"> 
    <value>2009</value> 
</Customization> 
</Customizations> 

et je suis à la recherche de mettre à jour la valeur de personnalisation avec la élément avec l'attribut Année. Été regarder pendant un certain temps et la meilleure tentative est:

UPDATE TestTable 
SET XmlColumn.modify(
' 
    replace value of (/Customizations/Customization/@name[.="Year"]/value)[1] 
    with ("2010") 
') 

Quelqu'un peut-il aider à indiquer où je vais mal?

Répondre

0

Vous devez utiliser une expression XPath légèrement différente:

UPDATE TestTable 
SET 
    XmlColumn.modify('replace value of (/Customizations/Customization[@name="Year"]/value/text())[1] with "2010"') 
WHERE ....... 

Plus précisément, vous devez spécifier l'/value/text() afin que le texte intérieur du nœud <value> sera remplacé.

+0

Exactement ce que je cherchais. Merci beaucoup. – Tadhg

Questions connexes