2010-12-03 14 views
63

Ich muss die Werte einer Spalte aktualisieren, mit einem Teilstring ersetzt werden, um die vorhandenen Werte getan werden.T-SQL-Zeichenfolge ersetzen in Update

Beispiel:

Daten enthält [email protected], [email protected] usw.

Ich brauche die Werte zu aktualisieren, so dass @domain2 mit @domain1 ersetzt wird.

+0

Wie viele E-Mail-Adressen hat jede Spalte? Sind abc @ domain1 und pqr @ domain2 in derselben Spalte? – dana

+0

yeah - sie sind in der gleichen Spalte .. – Sekhar

Antwort

119

Die Syntax für REPLACE:

REPLACE (string_expression, string_pattern, string_replacement)

Damit die SQL Sie müssen sein sollte:

UPDATE [DataTable] SET [ColumnValue] = REPLACE([ColumnValue], 'domain2', 'domain1') 
4
update YourTable 
    set YourColumn = replace(YourColumn, '@domain2', '@domain1') 
    where charindex('@domain2', YourColumn) <> 0 
+0

Enthält die where-Klausel wie in dieser Antwort irgendwelche Effizienzgewinne über die angenommene Antwort? –

8

Wenn jemand kümmert, für NTEXT , verwenden Sie das folgende Format:

SELECT CAST(REPLACE(CAST([ColumnValue] AS NVARCHAR(MAX)),'find','replace') AS NTEXT) 
    FROM [DataTable] 
+1

Diese Anweisung an sich führt das Update nicht aus. UPDATE [Datatable] SET SET [Column] = CAST (REPLACE (CAST ([Column] AS NVARCHAR (MAX)), 'domain2', 'domain1') AS NTEXT) : Sie Folgendes tun müssen VON [Datentabelle] –