¿Qué consulta MySQL hará una búsqueda de texto y la reemplazará en un campo en particular en una tabla?
Es decir, buscar foo
y reemplazar por bar
lo que se hello foo
convierte en un registro con un campo con el valor hello bar
.
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;
[field_name]
, "foo", "bar");WHERE instr(field, 'foo') > 0;
(por lo que no realizaría 2 búsquedas) ... ¿Me equivoco?WHERE
cláusula que hacesUPDATE
en todas las filas ...fuente
Por ejemplo, si quiero reemplazar todas las apariciones de John por Mark, usaré a continuación,
fuente
Y si desea buscar y reemplazar en función del valor de otro campo, puede hacer un CONCAT:
Solo para tener este aquí para que otros lo encuentren a la vez.
fuente
En mi experiencia, el método más rápido es
El
INSTR()
camino es el segundo más rápido y omitir laWHERE
cláusula es más lento, incluso si la columna no está indexada.fuente
La función Reemplazar cadena hará eso.
fuente
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.
fuente