Come sostituire una stringa in una colonna della tabella di SQL Server
-
03-07-2019 - |
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
?
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