Pular para o conteúdo
Visualizando 15 posts - 1 até 15 (de 20 do total)
  • Autor
    Posts
  • #96065
    Lourival
    Participante

      Pessoal,
      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..

      #96066
      Peterson
      Participante

        Lourival,

        Desculpe se minha dúvida parece óbvia, mas não entendi o tipo de dados da coluna.

        #96067
        Lourival
        Participante

          Na 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.

          #96068
          Manoel872
          Participante

            SELECT 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.

            #96069
            Peterson
            Participante

              tente:

              REPLACE(x, string_busca, string_substituta). Exemplo:

              SELECT REPLACE(coluna, ‘String_original’, ‘Nova_string’)
              FROM tabela;

              #96070
              Lourival
              Participante

                Tenho 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

                #96071
                Peterson
                Participante

                  mas isso somente irá trazer o resultado na tela, se precisar de fazer um update na tabela, tem que bolar um update com essa subconsulta.

                  #96072
                  burga
                  Participante

                    qual 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…

                    #96073
                    Lourival
                    Participante

                      É 10g no linux update 10.2.0.4

                      com o select vai mudar linha a linha, ou todas as linhas??

                      Att

                      #96074
                      burga
                      Participante

                        se 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…

                        #96075
                        Peterson
                        Participante

                          vc 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.

                          #96076
                          Lourival
                          Participante

                            Beleza,
                            vou rodar esse script agora mesmo e assim que funcionar eu posto
                            de volta.

                            Valew, gente!

                            #96077
                            Lourival
                            Participante

                              Nao funcionou, ele executa, faz o commit,
                              mas quando consulto, os valores continuam iguais..

                              oq pode ser???

                              #96078
                              Lourival
                              Participante

                                Só mais um detalhe,

                                o campo é:

                                VARCHAR2(60)

                                acho que por isso, não funciona.

                                #96079
                                burga
                                Participante

                                  O 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.

                                Visualizando 15 posts - 1 até 15 (de 20 do total)
                                • Você deve fazer login para responder a este tópico.