Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Digbrag

ORDER BY varchar que contem letras e números

Recommended Posts

Bom dia gente, tudo bem?

 

Estou tentando ordenar registros por uma coluna varchar que segue o padrão ABC001.

 

A ordem segue correta até ABC099, o problema é que a o proximo registro fica ABC1000 e depois de ABC1009 é que aparece o ABC100... Ja pesquisei bastante mas não encontrei nada que resolvesse meu caro... minha esperança esta em vcs....

 

Abaixo mostro os dados reais da tabela:

 

Coluna referencia

...
PAS095
PAS096
PAS098
PAS099
PAS1000
PAS1001(A)
PAS1001(B)
PAS1002(A)
PAS1002(B)
PAS1003
PAS1004
PAS1005
PAS1006
PAS1007
PAS1008
PAS1009
PAS101
PAS1010
PAS1011
...
Se alguem souber a direção, por favor indique, estou precisando de um norte! Valeeeeu

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente

 

Order by substr(coluna,1,3) , (cast trim(substr(coluna,4,4)) as int)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela tentativa Motta, mas não funcionou... exibe esse erro:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'trim(substr(referencia,4,4)) as int)
limit 1000' at line 6

 

A query completa ficou assim:

 

SELECT referencia
FROM produto
WHERE categoria = 7
ORDER BY
substr(referencia,1,3),
(cast trim(substr(referencia,4,4)) as int)
LIMIT 1000

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uhuuuuuuuu!!

 

Grande Motta! Revolveu mesmo!!

 

Obrigado cara, funcionou certinho...

 

Solução:

substr(coluna,1,3),
convert(trim(substr(coluna,4,4)),signed)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.