Respuestas:
Cambie table_name
y field
coincida con el nombre de la tabla y el campo en cuestión:
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;
WHERE instr(field, 'foo') > 0;
(por lo que no realizaría 2 búsquedas) ... ¿Me equivoco?
WHERE
cláusula que haces UPDATE
en todas las filas ...
UPDATE table_name
SET field = replace(field, 'string-to-find', 'string-that-will-replace-it');
UPDATE table SET field = replace(field, text_needs_to_be_replaced, text_required);
Por ejemplo, si quiero reemplazar todas las apariciones de John por Mark, usaré a continuación,
UPDATE student SET student_name = replace(student_name, 'John', 'Mark');
Y si desea buscar y reemplazar en función del valor de otro campo, puede hacer un CONCAT:
update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));
Solo para tener este aquí para que otros lo encuentren a la vez.
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()
camino es el segundo más rápido y omitir la WHERE
cláusula es más lento, incluso si la columna no está indexada.
La función Reemplazar cadena hará eso.
update
. De lo contrario, esta solución es mucho mejor, ya que se puede utilizar sin actualizar los campos.
Utilicé la línea de comando anterior de la siguiente manera: update TABLE-NAME set FIELD = replace (FIELD, 'And', 'and'); el propósito era reemplazar Y con y ("A" debería estar en minúsculas). 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 ands que son parte de una palabra o incluso los que ya están en minúscula.
[field_name]
, "foo", "bar");