2010-12-03 9 views
63

Necesito actualizar los valores de una columna, con una sustitución de subcadena realizada en los valores existentes.Sustitución de cadena T-SQL en la actualización

Ejemplo:

de datos contiene [email protected], [email protected] etc.

necesito para actualizar los valores de tal manera que @domain2 se sustituye con @domain1.

+0

¿Cuántas direcciones de correo tiene cada columna? ¿Son abc @ domain1 y pqr @ domain2 en la misma columna? – dana

+0

sí - están en la misma columna. – Sekhar

Respuesta

119

La sintaxis para REPLACE:

SUSTITUIR (string_expression, string_pattern, string_replacement)

Para que el SQL que necesita debe ser:

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

¿Incluye la cláusula where como en esta respuesta proporciona alguna ganancia de eficiencia sobre la respuesta aceptada? –

8

Si a alguien le interesa, por NTEXT , use el siguiente formato:

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

Esa declaración en sí misma no ejecuta la actualización. que tiene que hacer lo siguiente: ACTUALIZACIÓN [DataTable] SET SET [ColumnValue] = CAST (SUSTITUIR (CAST ([ColumnValue] AS NVARCHAR (MAX)), 'domain2', 'domain1') AS NTEXT) FROM [DataTable] –

Cuestiones relacionadas