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.


¿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

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

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]

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

2
¿Incluir la cláusula where como en esta respuesta proporciona alguna ganancia de eficiencia sobre la respuesta aceptada?
Jon Schneider
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.