O que a consulta MySQL fará uma pesquisa de texto e substituirá em um campo específico de uma tabela?
Ou seja procure por foo
e substitua por bar
, para que um registro com um campo com o valor hello foo
se torne hello bar
.
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);
Como por exemplo, se eu quiser substituir todas as ocorrências de John por Mark eu usarei abaixo,
UPDATE student SET student_name = replace(student_name, 'John', 'Mark');
E se você quiser pesquisar e substituir 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 imediatamente.
A função Replace string fará isso.
Eu usei a linha de comando acima como segue: Update TABLE-NAME set FIELD = substituir (FIELD, 'And', 'and'); O objetivo era substituir And por e ("A "deve estar em minúsculas). O problema é que ele não pode encontrar o "E" no banco de dados, mas se eu usar como "% E%", então ele pode encontrá-lo junto com muitos outros que fazem parte de um Word 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 a omissão da cláusula WHERE
é mais lenta, mesmo que a coluna não esteja indexada.