T-SQL-Zeichenfolge in Update ersetzen

82

Ich muss die Werte einer Spalte aktualisieren, wobei die vorhandenen Werte durch Teilzeichenfolgen ersetzt werden.

Beispiel:

Daten enthalten abc@domain1,pqr@domain2 usw.

Ich muss die Werte so aktualisieren, dass sie @domain2durch ersetzt werden @domain1.

Sekhar
quelle
Wie viele E-Mail-Adressen hat jede Spalte? Befinden sich abc @ domain1 und pqr @ domain2 in derselben Spalte?
Dana
Ja - sie sind in der gleichen Spalte.
Sekhar

Antworten:

150

Die Syntax für REPLACE :

REPLACE (string_expression, string_pattern, string_replacement)

Damit das SQL, das Sie benötigen, sein sollte:

UPDATE [DataTable] SET [ColumnValue] = REPLACE([ColumnValue], 'domain2', 'domain1')
Kofi Sarfo
quelle
1
In meinem Fall musste ich ein doppeltes Anführungszeichen durch ein einfaches Anführungszeichen ersetzen. Ich habe den folgenden REPLACE ([ColumnValue], '"', '' '') verwendet. Das Ende sind vier einfache Anführungszeichen.
Daniel Butler
11

Wenn es jemanden interessiert NTEXT, verwenden Sie das folgende Format:

SELECT CAST(REPLACE(CAST([ColumnValue] AS NVARCHAR(MAX)),'find','replace') AS NTEXT) 
    FROM [DataTable]
Tawani
quelle
4
Diese Anweisung an sich führt das Update nicht aus. Sie müssen Folgendes tun: UPDATE [DataTable] SET SET [ColumnValue] = CAST (REPLACE (CAST ([ColumnValue] AS NVARCHAR (MAX)), 'domain2', 'domain1') AS NTEXT) FROM [DataTable]
Adam Hey
6
update YourTable
    set YourColumn = replace(YourColumn, '@domain2', '@domain1')
    where charindex('@domain2', YourColumn) <> 0
Joe Stefanelli
quelle
2
Bietet die Aufnahme der where-Klausel in dieser Antwort Effizienzgewinne gegenüber der akzeptierten Antwort?
Jon Schneider