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

      Ola pessoal.

      Estou ocm um problema ao tentar ordenar colunas de uma tabela.

      Tenho os seguintes registros em uma tabela:

      CODIGO
      ----------
      PAIS5
      PAIS2
      PAIS3
      PAIS4
      PAIS122

      O que acontece! Caso eu efetue um ORDER BY CODIGO, me retorna da seguinte maneira:

      CODIGO
      ----------
      PAIS122
      PAIS2
      PAIS3
      PAIS4
      PAIS5

      Ja tentei fazer o seguinte:

      ORDER BY TO_NUMBER(‘CODIGO’), porém retorna errado também:

      CODIGO
      ----------
      PAIS5
      PAIS2
      PAIS3
      PAIS4
      PAIS122

      Alguém tem alguma sugestão?

      Agradeço desde ja!

      #92710
      Avatar photoRegis Araujo
      Participante

        Salve Tiago..

        Tenta..


        Order by to_number(substr(CODIGO, 4,1));

        Abraços..!!

        #92711
        Tiago_BB
        Participante

          Também não funcionou!!! 😕

          #92712
          Leonardo Faria Ferreira
          Participante

            Olá!

            Tente assim:

            select to_number(CODIGO) from tabela order by CODIGO;

            []’s

            #92713
            burga
            Participante

              Seguindo a mesma lógica do Regis, somente cortando a string no local correto…

              Order by to_number(substr(CODIGO, 5,10));

              😀

              #92714
              Tiago_BB
              Participante

                também não deu!!!

                Deu o seguinte erro:

                ORA-01722-invalid number

                😡

                #92715
                burga
                Participante

                  Testa a que eu passei… =p

                  #92716
                  Tiago_BB
                  Participante


                    Order by to_number(substr(CODIGO, 5,10));

                    Também não deu!!

                    #92717
                    Leonardo Faria Ferreira
                    Participante

                      Olá.

                      você pode passar a descrição da tabela?

                      []s

                      #92718
                      burga
                      Participante

                        ele deve retornar assim:

                        CODIGO

                        PAIS122
                        PAIS2
                        PAIS3
                        PAIS4
                        PAIS5

                        ou assim?

                        CODIGO

                        PAIS2
                        PAIS3
                        PAIS4
                        PAIS5
                        PAIS122

                        Testando o exemplo que eu passei, deu o retorno igual ao da segunda maneira:

                        with t1 as (select 'PAIS5' CODIGO from dual
                        union
                        select 'PAIS2' from dual
                        union
                        select 'PAIS3' from dual
                        union
                        select 'PAIS4' from dual
                        union
                        select 'PAIS122' from dual)
                        select codigo
                        from t1
                        order by to_number(substr(CODIGO, 5,10));

                        se quiser igual ao da primeira só substirua o 10 por 1 no ultimo parâmetro da função substr no order by.

                        #92719
                        Tiago_BB
                        Participante

                          Entaum Burga.

                          Tentei dessa forma:


                          SELECT * FROM TABELA ORDER BY TO_NUMBER(substr('CODIGO', 5, 10))

                          E não deu certo!

                          #92720
                          burga
                          Participante

                            [quote=”Tiago_BB”:6j6c3lkq]Entaum Burga.

                            Tentei dessa forma:


                            SELECT * FROM TABELA ORDER BY TO_NUMBER(substr('CODIGO', 5, 10))

                            E não deu certo![/quote]

                            Apresenta o que? Já estou considerando que você está fazendo sem as aspas simples no CODIGO…

                            Se estiver fazendo com as aspas, retire elas… Se estiver fazendo sem as aspas, mostre o resultado obtido para que possamos entender melhor o seu problema e ajudá-lo de forma mais objetiva.

                            E ainda, como o ora-leo solicitou, uma descrição da tabela também ajudaria…

                            DESC TABELA;

                            #92721
                            Ishii
                            Participante

                              Olá,

                              Por mim isso será resolvido com POG mesmo… afinal só POG para resolver problemas de MER…(essa para duplo sentido mesmo 🙂 )


                              select * from TABELA
                              order by to_number(replace(codigo,'PAIS','0'))

                              Acho que essa query está no top10 das mais feias que eu já fiz….

                              []s Ishii

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