Eu tenho uma coluna contendo URLs (ID, URL):
http://www.example.com/articles/updates/43
http://www.example.com/articles/updates/866
http://www.example.com/articles/updates/323
http://www.example.com/articles/updates/seo-url
http://www.example.com/articles/updates/4?something=test
Gostaria de mudar a palavra "atualizações" para "notícias". É possível fazer isso com um script?
Respostas:
Agora linhas que eram como
http://www.example.com/articles/updates/43
será
http://www.example.com/articles/news/43
http://www.electrictoolbox.com/mysql-find-replace-text/
fonte
WHERE LIKE
cláusula no final, porque se o texto a ser encontrado não estiver lá, a linha não será atualizada, mas deverá acelerar as coisas . "LIKE '%%'
não usa nenhum índice, se houvesse outras partes em que, quando, por exemplo, algo comodate_added > '2014-07-01'
isso poderia ter ajudadoSim, o MySQL tem uma função REPLACE ():
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace
Observe que é mais fácil se você criar um alias ao usar
SELECT
fonte
updates
apareça apenas uma vez na string, isso funcionaria. Caso contrário, você estará preso à manipulação direta de strings, o que é uma verdadeira dor no MySQL. Nesse ponto, seria mais fácil escrever um script único para selecionar os campos, manipulação no cliente e depois escrever de volta.A função de substituição deve funcionar para você.
Retorna a string str com todas as ocorrências da string from_str substituídas pela string to_str.
REPLACE()
realiza uma correspondência que diferencia maiúsculas de minúsculas ao procurar from_str.fonte
Você pode simplesmente usar a função replace (),
Nota: A consulta acima, se for para atualizar registros diretamente na tabela, se você deseja selecionar a consulta e os dados não devem ser afetados na tabela, pode usar a seguinte consulta-
fonte
Além da resposta de gmaggio, se você precisar dinamicamente
REPLACE
e deUPDATE
acordo com outra coluna, você pode fazer, por exemplo:No meu exemplo, a string
articles/news/
é armazenadaother_table t2
e não é necessário usarLIKE
aWHERE
cláusulafonte