UPDATE [nome_tabela] SET [nome_do_campo] = SUBSTITUIR ( [field_name], "foo", "bar");
Meetai.com
6
Eu acho que é mais rápido não usar WHERE instr(field, 'foo') > 0;(por isso não faria duas pesquisas) ... Estou errado?
Inemanja
2
@treddell, nenhuma posição começa em 1 nas seqüências SQL.
Alexis Wilke
2
@inemanja, @Air sem a WHEREcláusula fizer um UPDATEem todas as linhas ...
Alexis Wilke
7
Como Pring, se você quiser deixar um comentário como esse, poderá explicar o porquê. Foi um erro no conselho original ou um erro da sua parte? E você sabe que antes de fazer alterações abrangentes em um banco de dados, você deve fazer backup primeiro?
Pdwalker
86
UPDATE table_name SET field = replace(field,'string-to-find','string-that-will-replace-it');
Funciona para mim porque preciso adicionar outra cláusula where. UPDATE table_name SET campo = REPLACE (campo, 'foo', 'bar') WHERE campo LIKE '% foo%' AND otherfield = 'foo22'
Funciona para mim. Depende de como você interpreta a pergunta. Se você precisar alterar as entradas do banco de dados, use update. Caso contrário, esta solução é muito melhor, pois pode ser usada sem atualizar os campos.
Gruber
0
Eu usei a linha de comando acima da seguinte forma: update TABLE-NAME set FIELD = replace (FIELD, 'And', 'and'); o objetivo era substituir E por e ("A" deve estar em minúscula). O problema é que não é possível encontrar o "E" no banco de dados, mas se eu usar como "% And%", ele pode ser encontrado junto com muitos outros ands que fazem parte de uma palavra ou mesmo os que já estão em minúsculas.
[field_name]
, "foo", "bar");WHERE instr(field, 'foo') > 0;
(por isso não faria duas pesquisas) ... Estou errado?WHERE
cláusula fizer umUPDATE
em todas as linhas ...fonte
Por exemplo, se eu quiser substituir todas as ocorrências de John por Mark, usarei abaixo,
fonte
E se você deseja pesquisar e substituir com base no valor de outro campo, pode fazer um CONCAT:
Só para ter este aqui para que outros o encontrem de uma só vez.
fonte
Na minha experiência, o método mais rápido é
O
INSTR()
caminho é o segundo mais rápido e a omissão daWHERE
cláusula é a mais lenta, mesmo que a coluna não esteja indexada.fonte
A função Substituir sequência fará isso.
fonte
update
. Caso contrário, esta solução é muito melhor, pois pode ser usada sem atualizar os campos.Eu usei a linha de comando acima da seguinte forma: update TABLE-NAME set FIELD = replace (FIELD, 'And', 'and'); o objetivo era substituir E por e ("A" deve estar em minúscula). O problema é que não é possível encontrar o "E" no banco de dados, mas se eu usar como "% And%", ele pode ser encontrado junto com muitos outros ands que fazem parte de uma palavra ou mesmo os que já estão em minúsculas.
fonte