Search code examples
c#sql-serverxmlsqlxml

how to update element name in a xml column in sql server


I have an xml column in my table like following:

   <info>
      <teacher>     
            <name>John</name>   
      </teacher>
      <StInfo>
        <name>William</name>    
        <address>India</address>    
      </StInfo>
    </info>

I have to just update to

 <info>
          <teacher>     
                <name>John</name>   
          </teacher>
          <Student>
            <name>William</name>    
            <address>India</address>    
          </Student>
        </info>

Solution

  • I've built an example for you in SQL Server using your data:

    DECLARE @StackExample TABLE (
         Id UNIQUEIDENTIFIER NOT NULL PRIMARY KEY DEFAULT(NEWID())
        ,XmlColumn XML
    )
    
    INSERT INTO @StackExample(XmlColumn) VALUES('<info>
      <StInfo>
        <name>William</name>    
        <address>India</address>    
      </StInfo>
    </info>')
    
    
    UPDATE T
    SET XmlColumn = XmlColumn.query('<info>
      <Student>
      {info/StInfo/*}
      </Student>
    </info>')
    FROM @StackExample t
    
    SELECT * FROM @StackExample
    

    I hope this can help