- Este tópico contém 12 respostas, 5 vozes e foi atualizado pela última vez 16 anos atrás por
Ishii.
-
AutorPosts
-
19 de fevereiro de 2010 às 10:27 pm #92707
Tiago_BB
ParticipanteOla 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!
19 de fevereiro de 2010 às 10:46 pm #92710Regis Araujo
ParticipanteSalve Tiago..
Tenta..
Order by to_number(substr(CODIGO, 4,1));
Abraços..!!
19 de fevereiro de 2010 às 10:48 pm #92711Tiago_BB
ParticipanteTambém não funcionou!!! 😕
19 de fevereiro de 2010 às 11:04 pm #92712Leonardo Faria Ferreira
ParticipanteOlá!
Tente assim:
select to_number(CODIGO) from tabela order by CODIGO;
[]’s
19 de fevereiro de 2010 às 11:15 pm #92713burga
ParticipanteSeguindo a mesma lógica do Regis, somente cortando a string no local correto…
Order by to_number(substr(CODIGO, 5,10));😀
19 de fevereiro de 2010 às 11:15 pm #92714Tiago_BB
Participantetambém não deu!!!
Deu o seguinte erro:
ORA-01722-invalid number
😡
19 de fevereiro de 2010 às 11:17 pm #92715burga
ParticipanteTesta a que eu passei… =p
19 de fevereiro de 2010 às 11:18 pm #92716Tiago_BB
Participante
Order by to_number(substr(CODIGO, 5,10));
Também não deu!!
19 de fevereiro de 2010 às 11:22 pm #92717Leonardo Faria Ferreira
ParticipanteOlá.
você pode passar a descrição da tabela?
[]s
19 de fevereiro de 2010 às 11:25 pm #92718burga
Participanteele deve retornar assim:
CODIGOPAIS122
PAIS2
PAIS3
PAIS4
PAIS5ou assim?
CODIGOPAIS2
PAIS3
PAIS4
PAIS5
PAIS122Testando 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.
19 de fevereiro de 2010 às 11:46 pm #92719Tiago_BB
ParticipanteEntaum Burga.
Tentei dessa forma:
SELECT * FROM TABELA ORDER BY TO_NUMBER(substr('CODIGO', 5, 10))
E não deu certo!
20 de fevereiro de 2010 às 12:57 am #92720burga
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;20 de fevereiro de 2010 às 3:20 am #92721Ishii
ParticipanteOlá,
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
-
AutorPosts
- Você deve fazer login para responder a este tópico.