¿Qué consulta MySQL hará una búsqueda de texto y la reemplazará en un campo en particular en una tabla?
Es decir, buscar fooy reemplazar por barlo que se hello fooconvierte en un registro con un campo con el valor hello bar.
Cambie table_namey fieldcoincida 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?WHEREcláusula que hacesUPDATEen 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 laWHEREclá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