MySQL procurar e substituir algum texto em um campo
Pergunta
O MySQL consulta irá fazer uma pesquisa e substituir texto em um campo particular em uma tabela?
i. procurar foo
e substituir com bar
assim um registro com um campo com o valor hello foo
se torna hello bar
.
Solução
Alterar table_name
e field
para corresponder ao seu nome de tabela e campo em questão:
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;
- SUBSTITUIR (funções de string)
- INSTR (funções de string)
Outras dicas
UPDATE table_name
SET field = replace(field, 'string-to-find', 'string-that-will-replace-it');
E se você deseja pesquisar e substituir com base no valor de outro campo que você poderia fazer uma CONCAT:
update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));
Só para se ter este aqui para que os outros vão achar que é ao mesmo tempo.
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 Vou usar a seguir,
UPDATE student SET student_name = replace(student_name, 'John', 'Mark');
O Substituir função string vontade fazer isso.
Na minha experiência, o método mais rápido é
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE field LIKE '%foo%';
A forma INSTR()
é o segundo mais rápido e omitindo a cláusula WHERE
completamente é mais lento, mesmo se a coluna não é indexado.
Eu usei a linha de comando acima da seguinte forma: atualização A tabela ajustou-field name = substituir (FIELD, 'E', 'e'); o objetivo era substituir E com e ( "A" deve estar em letras minúsculas). O problema é que não pode encontrar o "E" no banco de dados, mas se eu usar como "% E%", então ele pode encontrá-lo juntamente com muitos outros ands que fazem parte de uma palavra ou mesmo os que já estão em minúsculas.