xml
  • sql-server-2005
  • tsql
  • xquery
  • 2009-06-13 4 views 1 likes 
    1

    das folgende XML-Variable gegeben, wie kann ich "UNKNOWN" im state Knoten mit "FOO" in T-SQL für MS SQL 2005 ersetzen?Verwenden von XQuery in SQL 2005, um den Wert eines Knotens zu ersetzen?

    declare @xmldata xml 
    
    set @xmldata = 
    
        '<Collection> 
         <Plan> 
          <StateCode>UNKNOWN</StateCode> 
          <Type>Tubular</Type> 
         </Plan> 
        </Collection>' 
    

    Im Gegensatz zu einem similar question, die ich gefunden, das ist einfach ein XML typisierte Variable, kein Tabellensatz.

    Sollte ich einfach den Variablenwert in eine Tabelle einfügen und mit der in dieser Frage vorgestellten Methode gehen, oder kann ich einfach die XML-Variable direkt manipulieren und die Ersetzung durchführen?

    Antwort

    2

    Sie können die XML-Variable direkt manipulieren und den Ersatz durch:

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

    (Die XPath genau nicht richtig sein könnte, da ich keinen Zugriff auf einen SQL-Server atm haben)

    Auch Beachten Sie, dass dies nicht funktioniert, wenn UNKNOWN tatsächlich leerer Text ist, der ein bisschen mehr Arbeit erfordert!)

    +0

    Vielen Dank !! –

    +1

    Was ist die Problemumgehung in dem von Ihnen erwähnten Randfall (leerer Text)? – paulwhit

    Verwandte Themen