Come sostituire una stringa in una colonna di tabella di SQL Server

Ho una tabella ( SQL Sever ) che fa riferimento a percorsi ( UNC o altro), ma ora il percorso sta per cambiare.

Nella colonna percorso, ho molti record e ho bisogno di cambiare solo una parte del percorso, ma non l’intero percorso. E ho bisogno di cambiare la stessa stringa in quella nuova, in ogni record.

Come posso fare questo con un semplice update ?

È così facile:

 update my_table set path = replace(path, 'oldstring', 'newstring') 
 UPDATE [table] SET [column] = REPLACE([column], '/foo/', '/bar/') 

Ho provato quanto sopra ma non ha prodotto il risultato corretto. Quello che segue:

 update table set path = replace(path, 'oldstring', 'newstring') where path = 'oldstring' 
 UPDATE CustomReports_Ta SET vchFilter = REPLACE(CAST(vchFilter AS nvarchar(max)), '\\Ingl-report\Templates', 'C:\Customer_Templates') where CAST(vchFilter AS nvarchar(max)) LIKE '%\\Ingl-report\Templates%' 

Senza la funzione CAST ho ricevuto un errore

Il tipo di dati di argomento ntext non è valido per l’argomento 1 della funzione di replace .

Puoi usare questa query

 update table_name set column_name = replace (column_name , 'oldstring' ,'newstring') where column_name like 'oldstring%' 
 select replace(ImagePath, '~/', '../') as NewImagePath from tblMyTable 

dove “ImagePath” è il mio nome colonna.
“NewImagePath” è la colonna di tempo Nome insted di “ImagePath”
“~ /” è la mia stringa corrente. (vecchia stringa)
“../” è la mia stringa requried. (nuova stringa)
“tblMyTable” è la mia tabella nel database.

tutte le risposte sono ottime ma voglio solo darti un buon esempio

 select replace('this value from table', 'table', 'table but updated') 

questa istruzione SQL sostituirà l’esistenza della parola “tabella” (secondo parametro) all’interno dell’istruzione data (primo parametro) con il terzo parametro

il valore iniziale è this value from table ma dopo l’esecuzione della funzione di sostituzione sarà this value from table but updated

e qui è un vero esempio

 UPDATE publication SET doi = replace(doi, '10.7440/perifrasis', '10.25025/perifrasis') WHERE doi like '10.7440/perifrasis%' 

per esempio se abbiamo questo valore

 10.7440/perifrasis.2010.1.issue-1 

diventerà

 10.25025/perifrasis.2010.1.issue-1 

spero che questo ti offra una migliore visualizzazione

Se il tipo di colonna di destinazione è diverso da varchar / nvarchar come testo , dobbiamo convertire il valore della colonna come stringa e quindi convertirlo come:

 update URL_TABLE set Parameters = REPLACE ( cast(Parameters as varchar(max)), 'india', 'bharat') where URL_ID='150721_013359670' 

Puoi anche sostituire il testo di grandi dimensioni per il modello di email in fase di esecuzione, ecco un semplice esempio per questo.

 DECLARE @xml NVARCHAR(MAX) SET @xml = CAST((SELECT [column] AS 'td','', ,[StartDate] AS 'td' FROM [table] FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX)) select REPLACE((EmailTemplate), '[@xml]', @xml) as Newtemplate FROM [dbo].[template] where id = 1