Domanda

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

Nella colonna del 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 con quella nuova, in ogni record.

Come posso farlo con un semplice update ?

È stato utile?

Soluzione

È così facile:

update my_table
set path = replace(path, 'oldstring', 'newstring')

Altri suggerimenti

UPDATE [table]
SET [column] = REPLACE([column], '/foo/', '/bar/')

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

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 argomento ntext non è valido per l'argomento 1 della funzione sostituisci .

Puoi usare questa query

update table_name set column_name = replace (column_name , 'oldstring' ,'newstring') where column_name like 'oldstring%'

tutte le risposte sono fantastiche 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 fornita (primo parametro) con il terzo parametro

il valore iniziale è questo valore dalla tabella ma dopo aver eseguito la funzione di sostituzione sarà questo valore dalla tabella ma aggiornato

e qui è un vero esempio

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

ad esempio se abbiamo questo valore

10.7440/perifrasis.2010.1.issue-1

diventerà

10.25025/perifrasis.2010.1.issue-1

spero che questo ti dia una migliore visualizzazione

select replace(ImagePath, '~/', '../') as NewImagePath from tblMyTable 
  

dove " ImagePath " è il mio nome colonna.
" NewImagePath " è temporanea   nome colonna installato di " ImagePath "
" ~ / " è la mia stringa corrente. (vecchio   stringa)
" ../" è la mia stringa requried. (nuova stringa)
  & Quot; tblMyTable " è la mia tabella nel database.

Se il tipo di colonna di destinazione è diverso da varchar / nvarchar come testo , è necessario eseguire il cast del valore della colonna come stringa e convertirlo come:

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

devi sostituire il percorso con l'aiuto della funzione di sostituzione.

update table_name set column_name = replace(column_name, 'oldstring', 'newstring')

qui nome_colonna si riferisce a quella colonna che si desidera modificare.

Spero che funzioni.

Puoi anche sostituire testo di grandi dimensioni per il modello di posta elettronica 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top