Pular para o conteúdo
  • Este tópico contém 13 respostas, 5 vozes e foi atualizado pela última vez 16 anos, 1 mês atrás por Lescovitz.
Visualizando 14 posts - 1 até 14 (de 14 do total)
  • Autor
    Posts
  • #92171
    Lescovitz
    Participante

      Olá Pessoal!!!
      Sou novo no Fórum!!!
      Tenho uma tabela que contem dados no seguinte formato: 7070707-7, necessito retirar esse “hifen” 70707077.
      Gostaria de fazer isso via comando sql para não necessita mandar para o desenvolvimento criar uma rotina só para isso pois irei utilizar somente uma vez. Necessito que fosse alterado no banco mesmo e não só na consulta.
      Gostaria muito da ajuda de vocês!!
      Desde já agradeço a atenção!!!!

      #92172
      fsitja
      Participante

        Olá Lescovitz, seja bem-vindo ao forum!

        Creio que sua pergunta foi respondida a 10 minutos atrás sem querer, pois coincidentemente é a mesma coisa do tópico abaixo:
        https://www.profissionaloracle.com.br/mo … pic&t=3850

        Vocês não trabalham juntos, né? 😆

        Só para adiantar: qual sua versão do Oracle?

        Se for 10g para cima dá para usar expressões regulares, ou um replace simples funciona em qualquer versão pois seu campo varchar é menos complexo.


        SQL> select regexp_replace('7070707-7', '[^[:digit:]]')
        2 from dual;

        REGEXP_REPLACE('7070707-7','[^

        70707077
        SQL> select replace('7070707-7', '-')
        2 from dual;

        REPLACE('7070707-7','-')

        70707077

        SQL>

        #92175
        Lescovitz
        Participante

          Coincidencia más não trabalhamos juntos!!!
          Li o tópico dele, não sei se não entendi mas acho que o dele é mesmo para consulta!!!
          Necessito editar essa tabela no banco de dados e não entendi muito sua sugestão!!!
          Teria como ser um pouco mais claro, porque no meu conhecimento o comando replace é somente para consulta. São 2550 registros que necessito fazer.

          #92176
          hudsona
          Participante

            “Necessito que fosse alterado no banco mesmo e não só na consulta. ”

            Se é pra alterar no BANCO é um update não ?

            rsrsrs

            #92179
            Lescovitz
            Participante

              Me banco de dados é o 9i. esqueci de responde no tópico anterior.

              #92180
              Lescovitz
              Participante

                Não sei realizar essa operação via update, gostaria de instruções.

                #92182
                Anônimo

                  Olá Lescovitz fiz um ex:

                  update table_name
                  set column_name = regexp_replace(column_name, ‘[^[:digit:]]’)
                  where column_name like ‘%-%’;

                  veja se isso resolve seu problema.

                  Abraços

                  #92184
                  Lescovitz
                  Participante

                    Executei esse comando:
                    update conversao_material_convenio
                    set cd_material_convenio = regexp_replace(cd_material_convenio, ‘[^[:digit:]]’)
                    where cd_material_convenio like ‘%-%’

                    Conforme o que entendi do seu exemplo mas não funcionou.

                    #92185
                    Lescovitz
                    Participante

                      Retorna o seguinte erro: ORA-00904 invalid column name

                      Cause: The column name entered is either missing or invalid.

                      Action: Enter a valid column name. A valid column name must begin with a letter, be less than or equal to 30 characters, and consist of only alphanumeric characters and the special characters $, _, and #. If it contains other characters, it must be enclosed in double quotation marks. It may not be a reserved word.

                      #92186
                      Anônimo

                        Qual erro?
                        Confira se realmente o nome da coluna está correto

                        #92187
                        fsitja
                        Participante

                          Algo como:

                          update conversao_material_convenio
                          set cd_material_convenio = replace(cd_material_convenio, '-')
                          where cd_material_convenio like '%-%'

                          Porém você continua com um problema… pois qualquer um pode entrar na sua tabela e inserir algo inválido ou dar update para caractere.

                          O ideal é criar uma coluna nova de tipo number e popular ela com os dados corretos.

                          #92189
                          Lescovitz
                          Participante

                            Erro ja citado a cima.

                            #92190
                            Avatar photoLeonardo Litz
                            Participante

                              Se seu banco é 9i a função regexp_replace não existe, esta foi implementada apartir do 10g

                              Faça:


                              update conversao_material_convenio
                              set cd_material_convenio = replace(cd_material_convenio,'-',null)
                              where cd_material_convenio like '%-%' ;

                              Antes de commitar, verifique se a alteração foi feita com sucesso!!!!

                              Valeu Leonardo Litz

                              #92199
                              Lescovitz
                              Participante

                                A todos que postaram e tentaram ajudar muito obrigado. Litz você salvou meu dia, muito obrigado. O que precisar estamos ai!!!!!

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