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`);