MySQL REPLACE: reemplazar substrings con facilidad

MySQL REPLACE te permite corregir errores o reemplazar información obsoleta en un string. Es importante que respetes las mayúsculas y minúsculas.

¿Qué es MySQL REPLACE?

La función que cumple el comando MySQL REPLACE puede resumirse en una frase: MySQL REPLACE reemplaza todas las ocurrencias de un substring (subcadena) con otro substring. Esto es cierto a priori; sin embargo, para explicar un poco mejor esta afirmación, merece la pena analizar primero la estructura de MySQL. El sistema gestor de bases de datos utiliza tablas para almacenar datos y ponerlos a disposición del usuario cuando le haga falta. Estos datos se almacenan en forma de strings, que se escriben entre comillas simples o dobles. Puede ocurrir que se produzca un error tipográfico o que parte de la información almacenada quede obsoleta. Es aquí cuando entra a jugar el comando MySQL REPLACE.

En lugar de buscar tediosamente una a una todas las ocurrencias del substring de forma innecesaria y correr el riesgo de olvidarse de una, MySQL REPLACE hace este trabajo por ti. El comando busca todos los lugares en los que aparece el substring dentro de un string y lo sustituye por la nueva información que hayas definido. De este modo, puedes sustituir una URL obsoleta, corregir errores de números o letras, o actualizar otros valores modificados en tu tabla. El resultado es una compilación de datos optimizada y actualizada. El comando MySQL REPLACE es muy fácil de usar y tiene pocas dificultades.

Sintaxis de MySQL REPLACE

Si estás aprendiendo a utilizar MySQL, probablemente ya conozcas algunos comandos como MySQL CONCAT, MySQL DELETE, MySQL DATE o MySQL DATEDIFF. En comparación con estas funciones, MySQL REPLACE es un poco más complejo, ya que el comando se compone de tres parámetros diferentes separados por comas. Sin embargo, su función se hace evidente rápidamente cuando se observa la sintaxis. Tiene el siguiente aspecto:

REPLACE (string, antiguo_substring, nuevo_substring);
bash

El parámetro “string” define la cadena de caracteres (string) de origen en la que se va a producir el cambio. “antiguo_substring” indica el substring que el sistema debe encontrar e intercambiar. Como último parámetro, MySQL REPLACE necesita el substring que se va a insertar en su lugar. El nuevo substring sustituye al anterior en todos los sitios del string en los que apareciera.

Cómo funciona MySQL REPLACE

Aquí un ejemplo sencillo para entender cómo funciona MySQL REPLACE. Se toma una serie de palabras y se cambia su significado fácilmente con el comando. El código del ejemplo es el siguiente:

SELECT REPLACE ("COSA COLOR", "O", "A");
bash

De esta forma, se indica al sistema que sustituya la letra “O” por una “A” en el string “COSA COLOR”. Este cambio se hace en todo lugar del string donde el sistema encuentre una “O”. Así que, en este caso, el resultado sería el siguiente:

REPLACE ("CASA CALAR", "O", "A")
CHICA HAMBRE CALAR
bash

MySQL Replace es case-sensitive

Es importante recordar que MySQL REPLACE es case-sensitive, es decir, distingue entre mayúsculas y minúsculas. Esto no afecta a nuestro ejemplo anterior de ninguna manera, pero en el siguiente caso verás por qué esto puede marcar la diferencia.

SELECT REPLACE ("Fardar", "F", "t");
bash

En este ejemplo, el resultado es el siguiente:

REPLACE ("Fardar", "F", "t")
tardar
bash

Sin embargo, esto también implica que MySQL REPLACE no obtendrá el resultado deseado si no se distingue entre mayúsculas y minúsculas al escribir el comando. Si hubieras introducido una “f” minúscula como antiguo substring en el ejemplo anterior, la sustitución no se habría llevado a cabo puesto que la letra indicada no aparece en la notación del string.

MySQL REPLACE con números

MySQL REPLACE no solo funciona con letras, sino también con números. El funcionamiento es, en definitiva, el mismo. En la siguiente serie de números hay un error evidente que puedes corregir fácilmente con MySQL REPLACE:

SELECT REPLACE ("16345", "6", "2");
bash

El resultado queda mucho mejor al instante:

REPLACE ("16345", "6", "2")
12345
bash

Un ejemplo práctico

Los ejemplos anteriores nos dan una idea de cómo se puede utilizar MySQL REPLACE, pero no tienen ninguna utilidad práctica más allá que esa. El siguiente ejemplo muestra cómo el comando limpia los datos. Imagina que has encontrado un error en una letra de la columna “Ciudad” de tu lista de clientes. En lugar de “Madrid” dice “Mardid” al menos una vez. En vez de borrar todas las entradas, sustituye la ciudad incorrecta por su ortografía correcta. Esto se hace de la siguiente manera:

UPDATE Lista_de_clientes
SET
Ciudad = REPLACE (Ciudad, "Mardid", "Madrid");
bash

Ahora la columna correspondiente vuelve a estar correcta.