Buscar y reemplazar cadenas de texto totales o parciales en MySQL

Creo que este pequeño tutorial será muy útil para muchos de ustedes, ya que a veces necesitamos buscar y reemplazar una cadena existente en algún campo de MySQL, por ejemplo “Busca ‘Zilus’ y lo que encuentres modificado por ‘TheZilus’.

Otro ejemplo practico, seria buscar y reemplazar fragmentos, digamos, si tenemos un campo de contenido separado por comas, como “tags”, categorías etc. Ejemplo practico: “Busca dentro de categorías ‘1’ y reemplaza por ‘2’.

Existen múltiples combinaciones a estas posibilidades, así que cada quien ponga el sazón que se necesite, aquí solo les muestro los tips!

Para buscar en un campo separado por comas:

SELECT * FROM tabla WHERE FIND_IN_SET(‘196’, `campo`);

Para que se cumplan dos reglas (pueden ser 2 o mas categorías etc):

SELECT * FROM tabla WHERE FIND_IN_SET(‘196’, `campo`) AND FIND_IN_SET(‘100’, `campo`);

Ahora reemplazaremos el numero 196 de el campo “campo”, que contiene ‘200,201,196,14’. Con esto el nuevo contenido de campo será ‘200,201,14’.

UPDATE tabla SET campo = campo &~ FIND_IN_SET(‘196,’, campo);

Otra forma de hacer lo mismo, pero con menos elegancia:

UPDATE tabla SET campo = REPLACE(campo, ‘196,’,”);

Ahora, algo similar pero realmente “reemplazando” un valor con otro, en este ejemplo, se cambia el 196, por 17.

UPDATE tabla SET campo = REPLACE(campo, ‘196,’,’17,’);

Como ejemplo final, recordemos que a estas consultas, se pueden agregar “condiciones”, en este ejemplo, reemplazaremos solamente en las filas que contengan 17 y 16, como ejemplo ‘201,196,17,58,34,16,172’:

UPDATE tabla SET campo = REPLACE(campo, ‘196,’,”) WHERE FIND_IN_SET(’17’, `campo`) AND FIND_IN_SET(’16’, `campo`);

Suscribete ahora

Suscríbete y recibe información valiosa sobre UI, UX, CX y otras soluciones informáticas