Blog

SQL Script Replace (Transact SQL) – Reemplazar texto via SQL

Posted by:

La verdad es que estoy muy acostumbrado cuando tengo que hacer según que manipulaciones de datos, con Access o sucedaneos.

Sólo hay que seleccionar la opción Buscar y Reemplazar, y alehop!!! Cambio realizado.

He de reconocer que soy de mente vaga, y hacer un reemplazar via código pues… busco la comodidad, hasta que como en esta ocasión no me ha quedado más remedio que picar una consulta que me actualizara los datos que yo quería (Access, cuanto te echo de menos… jejeje)

Bueno, al caso. Existe una función en Transact SQL (para SQL Server) que permite hacer un cambio de una determinada cadena de texto dentro de un campo.

REPLACE

La sintaxis es la siguiente:

REPLACE ( string_expression , string_pattern , string_replacement )
string_expression
Es la expresión de cadena en la que se va a buscar. string_expression puede tener un tipo de datos de carácter o binario.

string_pattern
Es la subcadena que se va a buscar. string_pattern puede ser de un tipo de datos de carácter o binario. string_pattern no puede ser una cadena vacía (“).

string_replacement
Cadena de reemplazo. string_replacement puede tener un tipo de datos de carácter o binario.

Ejemplo:

SELECT REPLACE(‘abcdefghicde’,’cde’,’xxx’);
GO

El resultado será el siguiente:

------------
abxxxfghixxx
(1 row(s) affected)

En mi caso, lo que quería era eliminar un “.00″ de una cadena numérica que había convertido en string, y quedaba un poco feo, así que combiné Replace con Update.

UPDATE TABLAX SET CAMPO=REPLACE(CAMPO,’.00′,”)

De tal manera que reemplazaba la cadena ‘.00’ por nada, y el resto lo dejaba igual.

Y poca cosa más tiene esta función.

Lo de siempre, con mucho cuidadito, porque no tiene un deshacer pero de gran utilidad.

2


About the Author:

Discussion

  1. Adin  June 17, 2014

    Estoy intentando modificar el correo electrónico de los usuarios de hotmial.com a gmail.com, la tabla se llama User y la columna se llama Email, he realizado el siguiente Query sin embargo no consigo mi objetivo:

    SELECT REPLACE (‘@hotmail.com’, ‘hotmail.com’, ‘gmail.com’)
    GO

    Puedes ayudarme a realizar el cambio que quiero.

    Gracias.

  2. lvgstark  June 17, 2014

    Hola Aldin,

    Te falta la parte importante que es indicar que tabla y que campo quieres modificar

    sería algo así
    UPDATE USER SET EMAIL=REPLACE (‘@hotmail.com’, ‘hotmail.com’, ‘gmail.com’)

    espero que te sirva

Add a Comment

UA-30641277-1