Olá Leitor(a), hoje eu vou falar sobre um problema que tive dias atrás ao tentar atualizar via comando alguns dados do banco de dados. São mais de dois milhões de informações onde eu precisava alterar um caracter para outro. Ao invés de sair alterando um a um ou criar um software que faz isso, achei melhor utilizar o replace do SQL.
Só que o replace precisava ser feito junto do comando UPDATE. Quando o comando é feito apenas com SELECT fica simples, basta utilizar:
Code 1 - Select com Replace
SELECT Replace (Campo, ‘Informação 1’, ‘Informação 2’)
O grande problema foi em fazer o UPDATE no banco que já trocava. Para o mesmo código funcionar, é necessário indicar um campo do banco de dados antes de fazer o código. Para isso, precisei acrescentar uma condição que para o nosso caso é o WHERE.
O code 2 começa com o comando UPDATE para atualizar a tabela de banco de dados. Todo comando UPDATE precisa de um campo para indicar ou “setar”. O campo que precisa ser atualizado precisa também de um replace de informação, o replace é diferente de colocar apenas o SET, como é colocado normalmente. Não pode ser esquecer do comando WHERE, isso porque todos os dados podem ser trocados, inclusive daqueles que não precisam ser.
Code 2 - Update com Replace
UPDATE tabela SET campo = replace(campo, 'Info1', 'Info2') WHERE campo LIKE ‘Info1%’;
O code 3 mostra um exemplo real do que precisava. Na tabela chamada Artigos eu precisava alterar o campo Link. Trocar o valor que estava com o sinal de + por traço. Nada precisava ser mudado do link só o sinal de um para outro.
Analisando:
Nome da tabela: Artigos
Nome do campo: Link
Sinal do campo: -
Sinal do campo que precisa ser trocado: +
Veja como ficou o código. Code 3.
Code 3 - Update real
UPDATE Artigos SET Link = Replace(Link, ‘+’, ‘-‘);
Como eu preciso trocar todos os dados, não precisei colocar a condição WHERE. Lembre-se de usar o BEGIN TRANSACTION antes de executar essa instrução. Verifique se os dados foram alterados para depois colocar o COMMIT.
Espero que tenha te ajudo e qualquer dúvida favor entrar em contato pelo site www.mauriciojunior.org.