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.


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')

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]

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

2
Bietet die Aufnahme der where-Klausel in dieser Antwort Effizienzgewinne gegenüber der akzeptierten Antwort?
Jon Schneider
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.