Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6322335
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 24, 20262026-05-24T16:18:42+00:00 2026-05-24T16:18:42+00:00

I want to replace plus symbol with underscore in the one xml node of

  • 0

I want to replace plus symbol with underscore in the one xml node of a particular table.
Example: In the below input, i want to replace plus symbol only in filepath node and NOT filename node.
Table column data type is XML and NOT varchar.

Input:

 <mediadata>
  <image>
    <FileName>BUF2011-450</FileName>
    <FilePath>/uploadedImages/Products/Indoor_Fun/Puzzles___Brain_Teasers/Puzzles/2000+_Pieces/BUF2011-450.jpg</FilePath>
    <Thumbnails>
      <Thumbnail>
        <FileName>BUF2011-450</FileName>
        <FilePath>/uploadedImages/Products/Indoor_Fun/Puzzles___Brain_Teasers/Puzzles/2000+_Pieces/thumb_BUF2011-450_Large.jpg</FilePath>
      </Thumbnail>
      <Thumbnail>
        <FileName>BUF2011-450</FileName>
        <FilePath>/uploadedImages/Products/Indoor_Fun/Puzzles___Brain_Teasers/Puzzles/2000+_Pieces/thumb_BUF2011-450_Small.jpg</FilePath>
      </Thumbnail>
    </Thumbnails>
  </image>
</mediadata>
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-24T16:18:45+00:00Added an answer on May 24, 2026 at 4:18 pm
    declare @T table(XMLCol xml)
    
    insert into @T values
    ('<image>
        <FileName>Tim+bottom</FileName>
        <FilePath>/Top+Bottom/AFX8995+450.jpg</FilePath>
      </image>')
    
    update T set
      XMLCol.modify('replace value of (/image/FilePath[1]/text())[1] 
                     with sql:column("T2.FilePath")')
    from @T as T
      cross apply (select replace(XMLCol.value('(/image/FilePath)[1]', 
                                               'varchar(100)'), 
                                  '+', 
                                  '_')
                  ) as T2(FilePath)      
    

    Edit

    The table variable @T above is instead of your table. Assume that your table is named YourTable and you have one ID column and XMLCol column. The update statement could look like this to change the XML where ID is 1.

    update T set
      XMLCol.modify('replace value of (/image/FilePath[1]/text())[1] 
                     with sql:column("T2.FilePath")')
    from YourTable as T
      cross apply (select replace(XMLCol.value('(/image/FilePath)[1]', 
                                               'varchar(100)'), 
                                  '+', 
                                  '_')
                  ) as T2(FilePath)      
    where T.ID = 1
    

    Edit

    It is not possible to update more than one node at a time with .modify(). You have to do this in a loop. The script below uses @T as a test table. You should replace that with whatever your table is called. @T has an ID column and the script assumes that you only update one row at a time and that you know the ID for that row. There are some comments in the code that explains what I do. Don’t hesitate to ask if there are something I should make clearer.

    -- Test table
    declare @T table(ID int, XMLCol xml)
    
    -- Sample data
    insert into @T values
    (1,
     '<mediadata>
        <image>
          <FileName>BUF2011-450</FileName>
          <FilePath>1/uploadedImages/Products/Indoor_Fun/Puzzles___Brain_Teasers/Puzzles/2000+_Pieces/BUF2011-450.jpg</FilePath>
          <Thumbnails>
            <Thumbnail>
              <FileName>BUF2011-450</FileName>
              <FilePath>2/uploadedImages/Products/Indoor_Fun/Puzzles___Brain_Teasers/Puzzles/2000+_Pieces/thumb_BUF2011-450_Large.jpg</FilePath>
            </Thumbnail>
            <Thumbnail>
              <FileName>BUF2011-450</FileName>
              <FilePath>3/uploadedImages/Products/Indoor_Fun/Puzzles___Brain_Teasers/Puzzles/2000+_Pieces/thumb_BUF2011-450_Small.jpg</FilePath>
            </Thumbnail>
          </Thumbnails>
        </image>
      </mediadata>
    ')
    
    -- ID for the row you need to update
    declare @ID int
    set @ID = 1
    
    -- Loop variable, node to update
    declare @Pos int
    set @Pos = 1
    
    -- The number of nodes to update
    declare @Count int
    
    -- Get the number of FilePath nodes
    select @Count = XMLCol.query('count(//FilePath)').value('.', 'int')
    from @T
    where ID = @ID
    
    while @Pos <= @Count
    begin
      update T set
        XMLCol.modify('replace value of ((//FilePath)[sql:variable("@Pos")]/text())[1] 
                       with sql:column("T2.FilePath")')
      from @T as T
        cross apply (select replace(T.XMLCol.
                                      query('(//FilePath)[sql:variable("@Pos")]').
                                      value('.', 'varchar(100)'), 
                                    '+', 
                                    '_')
                    ) as T2(FilePath)      
      where T.ID = @ID                 
    
      set @Pos += 1            
    end
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

This is a simple one. I want to replace a sub-string with another sub-string
On MS SQL Server 2005, I have a table that I want to replace.
I want to replace all non-alpha characters in a string with a plus '+'
In particular: I want to replace all occurances of a full stop \. with
I want to use PHP to replace javascript functions in HTML documents. For example:
In my file input.txt, I want to replace A->B, B->C, and C->A i.e. I
I I want to match the plus sign in a string and replace it,
Using Vim I often want to replace a block of code with a block
In the following code I want to replace every occurrence of U.S.A with united
I have a template in word (.docx) format and want to replace some placeholders

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.