[RESOLVIDO]Order by Oracle

7 respostas
P

Olá pessoal,
Estou com uma questão que não consigo resolver.
No meu select tenho um order by onde ordeno pela descrição dos produtos, só que tenho produtos com a seguinte estrutura um numero seguido do nome, por exemplo:
“1-Revestimento” e depois tenho os produtos com somente o nome tipo “Etiqueta” por exemplo, o que preciso é que todos os produtos que comecem pelo número venham por primeiro, ex.:
1-Revestimento
Etiqueta
Mas está sendo ordenando primeiro as letras e depois os números.
Alguém poderia me ajudar?
Desde já agradeço a atenção.

7 Respostas

R

Mostre seu SQL.

E

Você esperava um comportamento semelhante ao da tabela ASCII (onde os números vêm antes das letras), certo?

P

Obrigado por responderem.
entanglement, acredito que seja isso mesmo. :slight_smile:

E

Para ordenar do jeito que você precisa, é necessário alterar um parâmetro de sessão chamado NLS_SORT.

Comece a partir daqui:

E faça uma pesquisa para saber que parâmetro é necessário para passar para ALTER SESSION SET …

P

entanglement, será que não tem como usar este parametro no order by,mais ou menos isso "order by nlssort(produto,‘NLS_SORT=ASCII’); ?

E

http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch5lingsort.htm#NLSPG005

Legal, tem de usar esse método NLSSORT. Eu não conhecia isso :slight_smile:

P

entanglement, E ai meu chapa, consegui fazer funcionar.
Segue exemplo de como fiz para funcionar.

SELECT * FROM (
  SELECT ID, PRODUTO, PRECO
  FROM PRODUTOS)
ORDER BY ORDER BY NLSSORT(PRODUTO,'NLS_SORT=BINARY_AI');

Muito obrigado a todos que de dispuseram a me responder.

Criado 26 de fevereiro de 2013
Ultima resposta 26 de fev. de 2013
Respostas 7
Participantes 3