Reemplazo de cadena T-SQL en Actualización

83

Necesito actualizar los valores de una columna, con un reemplazo de subcadena en los valores existentes.

Ejemplo:

Los datos contienen abc@domain1, pqr@domain2etc.

Necesito actualizar los valores para que @domain2se reemplace con @domain1.

Sekhar
fuente
¿Cuántas direcciones de correo electrónico tiene cada columna? ¿Están abc @ dominio1 y pqr @ dominio2 en la misma columna?
dana
sí, están en la misma columna ..
Sekhar
1
Posible duplicado de Buscar y reemplazar parte de la cadena en la base de datos
Jon Schneider

Respuestas:

151

La sintaxis de REPLACE :

REEMPLAZAR (string_expression, string_pattern, string_replacement)

Para que el SQL que necesita debería ser:

UPDATE [DataTable] SET [ColumnValue] = REPLACE([ColumnValue], 'domain2', 'domain1')
Kofi Sarfo
fuente
1
En mi caso, necesitaba reemplazar una comilla doble con una comilla simple. Usé el siguiente REPLACE ([ColumnValue], '"', '' ''). El final son cuatro comillas simples.
Daniel Butler
11

Si a alguien le importa, NTEXTuse el siguiente formato:

SELECT CAST(REPLACE(CAST([ColumnValue] AS NVARCHAR(MAX)),'find','replace') AS NTEXT) 
    FROM [DataTable]
Tawani
fuente
4
Esa declaración en sí misma no ejecuta la actualización. debe hacer lo siguiente: UPDATE [DataTable] SET SET [ColumnValue] = CAST (REPLACE (CAST ([ColumnValue] AS NVARCHAR (MAX)), 'domain2', 'domain1') AS NTEXT) FROM [DataTable]
Adam Hola
6
update YourTable
    set YourColumn = replace(YourColumn, '@domain2', '@domain1')
    where charindex('@domain2', YourColumn) <> 0
Joe Stefanelli
fuente
2
¿Incluir la cláusula where como en esta respuesta proporciona alguna ganancia de eficiencia sobre la respuesta aceptada?
Jon Schneider