Pregunta

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

Es decir.buscar foo y reemplazar con bar entonces un registro con un campo con el valor hello foo se convierte hello bar.

¿Fue útil?

Solución

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

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

Otros consejos

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

Y si quieres buscar y reemplazar según el valor de otro campo puedes 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 tener este aquí para que otros lo encuentren de inmediato.

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

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

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

El Reemplazar La función de cadena hará eso.

En mi experiencia, el método más rápido es

UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE field LIKE '%foo%';

El INSTR() El camino es el segundo más rápido y omitiendo el WHERE La cláusula en conjunto es la más lenta, incluso si la columna no está indexada.

Utilicé la línea de comando anterior de la siguiente manera:actualizar NOMBRE DE TABLA establecer CAMPO = reemplazar (CAMPO, 'Y', 'y');el propósito era reemplazar Y con y ("A" debería estar en minúscula).El problema es que no puede encontrar "Y" en la base de datos, pero si uso "%And%", puede encontrarlo junto con muchos otros "Y" que forman parte de una palabra o incluso los que ya están en minúsculas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top