MySQL pesquisa e replace algum texto em um campo

O que a consulta MySQL fará uma pesquisa de texto e replaceá em um campo específico de uma tabela?

Ou seja, pesquise por foo e substitua por bar para que um registro com um campo com o valor hello foo se torne hello bar .

Altere table_name e field para corresponder ao nome da sua tabela e ao campo em questão:

 UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0; 
  • REPLACE (funções de string)
  • INSTR (funções de string)
 UPDATE table_name SET field = replace(field, 'string-to-find', 'string-that-will-replace-it'); 

E se você quiser pesquisar e replace com base no valor de outro campo, você pode fazer um CONCAT:

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

Só para ter este aqui, para que os outros o encontrem de uma só vez.

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

Como por exemplo, se eu quiser replace todas as ocorrências de John por Mark eu usarei abaixo,

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

A function de string Replace fará isso.

Eu usei a linha de comando acima, como segue: update TABLE-NAME set FIELD = replace (FIELD, ‘And’, ‘and’); o objective era replace And por e (“A” deveria estar em minúsculas). O problema é que ele não pode encontrar o “E” no database, mas se eu usar como “% E%”, então ele pode encontrá-lo junto com muitos outros que fazem parte de uma palavra ou até mesmo aqueles que já estão em minúsculas.

Na minha experiência, o método mais rápido é

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

A maneira INSTR() é a segunda mais rápida e omitir a cláusula WHERE é mais lenta, mesmo se a coluna não estiver indexada.