2009-06-13 5 views
1

Étant donné la variable XML suivant, comment puis-je remplacer "UNKNOWN" dans le noeud statecode avec "FOO" dans TSQL pour MS SQL 2005?L'utilisation de XQuery dans SQL 2005 pour remplacer la valeur d'un nœud?

declare @xmldata xml 

set @xmldata = 

    '<Collection> 
     <Plan> 
      <StateCode>UNKNOWN</StateCode> 
      <Type>Tubular</Type> 
     </Plan> 
    </Collection>' 

Contrairement à similar question que j'ai trouvé, cela est simplement une variable de type XML, pas un enregistrement de la table. Dois-je simplement insérer la valeur de la variable dans une table et suivre la méthode présentée dans cette question, ou puis-je simplement manipuler directement la variable XML et effectuer le remplacement?

Répondre

2

Vous pouvez manipuler la variable XML directement et effectuer le remplacement:

set @xmldata.modify('replace value of (/Collection/Plan/Type/text())[1] with "new value"') 

select @xml 

(Le XPath pourrait ne pas être tout à fait exact que je n'ai pas accès à un guichet automatique de serveur SQL)

En outre, notez que cela ne fonctionnera pas si UNKNOWN est en fait du texte vide, cela demande un peu plus de travail!)

+0

Merci beaucoup !! –

+1

quelle est la solution de contournement dans le cas de bordure que vous mentionnez (texte vide) – paulwhit

Questions connexes