Temos um banco de dados que possui vários registros com alguns dados inválidos em uma coluna, nos quais um editor incorporado escapou de coisas que não deveriam ter escapado e está quebrando links gerados.
Quero executar uma consulta para substituir os caracteres incorretos em todos os registros, mas não consigo descobrir como fazê-lo. Eu encontrei a replace()
função no MySQL, mas como posso usá-la dentro de uma consulta?
Por exemplo, qual seria a sintaxe correta se eu quisesse substituir a string <
por um colchete de ângulo menor que o real ( <
) em todos os registros que possuem <
a articleItem
coluna? Isso pode ser feito em uma única consulta (ou seja, selecionar e substituir tudo de uma só vez), ou eu tenho que fazer várias consultas? Mesmo se houver várias consultas, como faço replace()
para substituir o valor de um campo em mais de um registro?
Respostas:
Em um nível muito genérico
No seu caso, você diz que eles escaparam, mas como você não especifica como eles escaparam, digamos que eles escaparam para
GREATERTHAN
Como sua consulta realmente funcionará dentro da cadeia,
WHERE
é improvável que sua cláusula que faça a correspondência de padrões melhore qualquer desempenho - ela realmente gerará mais trabalho para o servidor. A menos que você tenha outro membro da cláusula WHERE que melhore o desempenho dessa consulta, você pode simplesmente fazer uma atualização como esta:Você também pode aninhar várias
REPLACE
chamadasVocê também pode fazer isso quando selecionar os dados (ao contrário de quando salvá-los).
Então, em vez de:
SELECT MyURLString From MyTable
Você poderia fazer
SELECT REPLACE (MyURLString, 'GREATERTHAN', '>') as MyURLString From MyTable
fonte
fonte
<
s. Você precisa usar a codificação e, assim:&
:)Verifique isto
Por exemplo, com string de amostra:
EG com nome da coluna / campo:
fonte
você pode escrever um procedimento armazenado como este:
Dessa forma, você tem controle modularizado sobre a tabela.
Você também pode generalizar o procedimento armazenado, tornando-o paramétrico com a tabela para limpar o parâmetro de entrada
fonte
Isso irá ajudá-lo.
Resultado:
fonte