411 Stimmen

Ersetzen einer Zeichenfolge in einer SQL Server-Tabellenspalte

Ich habe eine Tabelle ( SQL Sever ), die auf Pfade ( UNC oder anders), aber jetzt wird sich der Weg ändern.

In der Spalte "Pfad" habe ich viele Datensätze, und ich muss nur einen Teil des Pfads ändern, aber nicht den gesamten Pfad. Und ich muss in jedem Datensatz dieselbe Zeichenfolge in die neue Zeichenfolge ändern.

Wie kann ich dies mit einer einfachen update ?

13voto

Basheer AL-MOMANI Punkte 13273

Alle Antworten sind gut, aber ich möchte Ihnen nur ein gutes Beispiel geben

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

diese SQL-Anweisung ersetzt das Vorhandensein des Wortes "table" (zweiter Parameter) innerhalb der angegebenen Anweisung (erster Parameter) durch den dritten Parameter

der Ausgangswert ist this value from table aber nach der Ausführung der replace-Funktion wird es this value from table but updated

und hier ist ein echtes Beispiel

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

Wenn wir zum Beispiel diesen Wert haben

10.7440/perifrasis.2010.1.issue-1

wird es

10.25025/perifrasis.2010.1.issue-1

Ich hoffe, Sie können sich das so besser vorstellen

9voto

Müssen Sie den Pfad mit Hilfe der Ersetzen-Funktion ersetzen.

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

ici column_name bezieht sich auf die Spalte, die Sie ändern möchten.

Ich hoffe, es funktioniert.

6voto

Durgesh Pandey Punkte 2076
select replace(ImagePath, '~/', '../') as NewImagePath from tblMyTable 

wobei "ImagePath" der Name meiner Spalte ist.
"NewImagePath" i Spalte Name anstelle von "ImagePath"
"~/" ist mein aktueller String.(alter Zeichenkette)
"../" ist die von mir angeforderte Zeichenkette.(new string)
"tblMeineTabelle" ist meine Tabelle in der Datenbank.

4voto

khichar.anil Punkte 4219

Wenn der Typ der Zielspalte ein anderer ist als varchar/nvarchar wie Text müssen wir den Spaltenwert als String umwandeln und ihn dann als:

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

0voto

Shekhar Patel Punkte 593

Sie können auch großen Text für E-Mail-Vorlagen zur Laufzeit ersetzen, hier ist ein einfaches Beispiel dafür.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X