Como classificar os dados em valores alfanuméricos

votos
0

Eu tenho esses valores: d1, d45, d79, d33, d100

Eu quero classificar essas variáveis ​​em ordem crescente de minha mesa.

O que é a consulta para obter a saída como:

d1
d33
d45
d79
d100
Publicado 10/12/2008 em 10:58
fonte usuário
Em outras línguas...                            


4 respostas

votos
1

O que você quer é chamado de "tipo natural". Para o Microsoft SQL Server 2005, consulte esta pergunta . Para outros idiomas, consulte (por exemplo) esta outra questão .

Respondeu 10/12/2008 em 11:17
fonte usuário

votos
0

Se podemos assumir que os valores de dados contêm apenas a letra d e um valor numérico, então você também pode usar:

select column from YourTable
order by convert(int, replace(column, 'd', ''))

Se ele contém quaisquer outras letras, então este método torna-se rapidamente inutilizável:

select column from YourTable
order by convert(int, 
        replace(replace(replace(replace(replace(
            column, 'a', ''),
                'b', ''),
                'c', ''),
                'd', ''), 
                'e', '')
        )
Respondeu 10/12/2008 em 17:11
fonte usuário

votos
0

Se você pode garantir um padrão de / \ w \ d + / ...

Em postgres:

select foo from bar order by cast(substring(foo from 2) as int)

..e semelhante existirá para outros sabores SQL. mente caro.

EDIT: solução andróides parece muito boa:

..order by char_length(foo),foo
Respondeu 10/12/2008 em 11:21
fonte usuário

votos
0

Desculpe, não resposta SQL em tudo. :) Para a variante com uma letra única ordem de comprimento e alfa.

Respondeu 10/12/2008 em 11:15
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more