2008-09-24 17 views
205

¿Qué búsqueda MySQL hará una búsqueda de texto y la reemplazará en un campo particular en una tabla?MySQL busca y reemplaza un texto en un campo

I.e. busque foo y reemplace con bar para que un registro con un campo con el valor hello foo se convierta en hello bar.

Respuesta

392

Cambio table_name y field para que coincida con el nombre de tabla y campo en cuestión:

UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0; 
+64

UPDATE [table_name] SET [field_name] = REPLACE ('[field_name]', "foo", "bar"); –

+3

Creo que es más rápido no usar 'WHERE instr (campo, 'foo')> 0;' (para que no realice 2 búsquedas) ... ¿Estoy equivocado? – inemanja

+0

¿Alguien puede comentar la pregunta de @ inemanja? ¿Sería más rápido sin la cláusula 'DONDE'? – SBhojani

1

La función de cadena Replace hará eso.

+0

Funciona para mí. Depende de cómo interpretes la pregunta. Si necesita que las entradas de la base de datos cambien, entonces use 'update'. De lo contrario, esta solución es mucho mejor, ya que se puede utilizar sin actualizar los campos. – Gruber

72
UPDATE table_name 
SET field = replace(field, 'string-to-find', 'string-that-will-replace-it'); 
+1

me ayudó. Para todos los noobs, quita los corchetes. –

5

Y si quieres buscar y reemplazar b obre la base del valor de otro campo que podría hacer un CONCAT:

update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED')); 

sólo para tener este de aquí para que otros les resultará a la vez.

4
UPDATE table SET field = replace(field, text_needs_to_be_replaced, text_required); 

Como por ejemplo, si quiero reemplazar todas las apariciones de John Mark voy a utilizar a continuación,

UPDATE student SET student_name = replace(student_name, 'John', 'Mark'); 
0

he utilizado la línea de comandos anterior de la siguiente manera: actualización conjunto de mesa campo de nombre = reemplazar (CAMPO, 'Y', 'y'); el propósito era reemplazar Y con y ("A" debe ser minúscula). El problema es que no puede encontrar el "Y" en la base de datos, pero si uso como "% y%", puede encontrarlo junto con muchos otros que son parte de una palabra o incluso los que ya están en minúscula.

Cuestiones relacionadas