- Este tópico contém 19 respostas, 5 vozes e foi atualizado pela última vez 15 anos, 6 meses atrás por
burga.
-
AutorPosts
-
14 de setembro de 2010 às 11:42 pm #96065
Lourival
ParticipantePessoal,
Boa Tarde.Preciso fazer um update numa tabela onde preciso alterar somente o valor
do meio no campo inteiro.Pensei em usar substr, mas não tive êxito.
Coluna: Imagem
valor p alterar:
0060000090087200812190000010043A_1.jpg
onde preciso alterar 2008 para 2010 e 19 para 05
alguém tem alguma idéia?
Valew..
14 de setembro de 2010 às 11:57 pm #96066Peterson
ParticipanteLourival,
Desculpe se minha dúvida parece óbvia, mas não entendi o tipo de dados da coluna.
15 de setembro de 2010 às 12:09 am #96067Lourival
ParticipanteNa coluna: Imagens
tenho várias linhas com estes valores em cada linha.
usei somente uma linha como exemplo, o sistema bate uma foto e identifica
com esse valor: ou nome;0060000090087200812190000010043A_1.jpg
e preciso alterar somente onde esta o valor 2008 e o valor 19;
*************2008**19*************.jpg
é a mesma linha, e mesmo valor, só preciso alterar oq está no meio.
Deve existir uma maneira de fazer isso, tentei o substr, mas não tive sucesso.
Beleza.
15 de setembro de 2010 às 12:11 am #96068Manoel872
ParticipanteSELECT REPLACE(REPLACE(‘0060000090087200812190000010043A_1.jpg’,’2008′,’2010′),’19’,’05’) FROM DUAL
Talvez dessa forma funcione apenas tem q verificar a incidência da string no campo pois talvez pode atualizar mais de uma.
Att,
Manoel Jr.
15 de setembro de 2010 às 12:15 am #96069Peterson
Participantetente:
REPLACE(x, string_busca, string_substituta). Exemplo:
SELECT REPLACE(coluna, ‘String_original’, ‘Nova_string’)
FROM tabela;15 de setembro de 2010 às 12:15 am #96070Lourival
ParticipanteTenho mais de 40 mil linhas com esses valores para trocar,
as linhas subsequentes mudam só o final, que é a identificação da foto,
mas o ano e o dia eu preciso trocar.Esse SELECT com REPLACE daria certo??
Obrigado
15 de setembro de 2010 às 12:18 am #96071Peterson
Participantemas isso somente irá trazer o resultado na tela, se precisar de fazer um update na tabela, tem que bolar um update com essa subconsulta.
15 de setembro de 2010 às 12:18 am #96072burga
Participantequal a versão do banco?
se for 10g ou mais, use regexp_replace:
select regexp_replace('0060000090087200812190000010043A_1.jpg','(2008)([[:digit:]]{2})(19)','2010205')
from dual;Senão vá brincando com o replace mesmo, mas aí você vai ter que tomar mais cuidado pra não substituir o que não deve…
15 de setembro de 2010 às 12:22 am #96073Lourival
ParticipanteÉ 10g no linux update 10.2.0.4
com o select vai mudar linha a linha, ou todas as linhas??
Att
15 de setembro de 2010 às 12:26 am #96074burga
Participantese você quer mudar todas as linhas onde tem a incidencia dessa data ano 2008 e dia 19, você faz:
update tabela set imagem = regexp_replace(imagem,'(2008)([[:digit:]]{2})(19)','2010205') where regexp_like(imagem,'(2008)([[:digit:]]{2})(19)');ou coisa parecida…
15 de setembro de 2010 às 12:26 am #96075Peterson
Participantevc pode exibir essa alteração linha a linha se usar a cláusula where, se não usar ele não vai fazer distinções e vai exibir o conteúdo todo da tabela.
15 de setembro de 2010 às 12:29 am #96076Lourival
ParticipanteBeleza,
vou rodar esse script agora mesmo e assim que funcionar eu posto
de volta.Valew, gente!
15 de setembro de 2010 às 1:06 am #96077Lourival
ParticipanteNao funcionou, ele executa, faz o commit,
mas quando consulto, os valores continuam iguais..oq pode ser???
15 de setembro de 2010 às 1:27 am #96078Lourival
ParticipanteSó mais um detalhe,
o campo é:
VARCHAR2(60)
acho que por isso, não funciona.
15 de setembro de 2010 às 2:26 am #96079burga
ParticipanteO update só vai funcionar para os nomes com ano 2008 e dia 19, e mais, que tenha dois números entre o ano e o dia…
O update busca por padrões no valor do campo e os substitui…
O padrão configurado é 2008xx19, sendo que xx é um par de números quaisquer, e então substitui por 2010xx05. O update só vai alterar registros que estiverem neste padrão (2008xx19)…
Pelo menos foi isso que eu entendi que você deseja fazer…
Eu já estava considerando que o campo é um varchar2, então não é este o problema.
-
AutorPosts
- Você deve fazer login para responder a este tópico.