Substituir texto na tabela - MySQL

Muitas vezes é necessário substituir pedaços de textos nas tabelas do banco de dados, essa necessidade vem de diversas situações como por exemplo, um mal planejamento onde é necessário guardar o caminho de uma imagem e ao invés de guardar apenas o nome da imagem é guardado todo o caminho absoluto da imagem, com o nome do host e tudo, então quando se migra o site ou sistema para outro host é necessário alterar todos os registros que tinham esse host antigo para o novo, e fazer isso em cada registro se torna uma tarefa inviável.

Para solucionar esses casos e outros que surgem, pode ser utilizado a função nativa do MySQL REPLACE() junto com um comando de UPDATE. Sua sintaxe é o seguinte:


REPLACE(valor, 'valor antigo', 'valor novo')

No nosso caso o "valor", será o nome da coluna onde queremos que seja substituido o texto, por exemplo a coluna caminho_imagem, então seguindo o nosso exemplo, para alterar o host, de todos os registros da tabela, basta utilizar o seguinte comando UPDATE:


UPDATE table_name
SET caminho_imagem = REPLACE(caminho_imagem, 'www.siteantigo.com', 'www.sitenovo.com')

Com isso, todos os registros da tabela onde tinha na coluna caminho_imagem o valor www.siteantigo.com/imagem/nomedaiamgem.jpg foi substituido por www.sitenovo.com/imagem/nomedaiamgem.jpg, e você ainda pode fazer condições caso não queira substituir o valores de todos os registros, como por exemplo:


UPDATE table_name
SET caminho_imagem = REPLACE(caminho_imagem, 'www.siteantigo.com', 'www.sitenovo.com')
WHERE id = '4'
Voltar para o topo