Ir para conteúdo

POWERED BY:

Arquivado

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

paulojuchem

ORDER BY com numeros em strings

Recommended Posts

Parece ser simples, mas estou com dificuldades em ordenar STRINGS. Segue o escopo do problema

 

Dados ordenados por ID:

Parafuso 15x15

Parafuso 100x100

Parafuso 110x110

Parafuso 11x11

 

Resultado esperado:

Parafuso 11x11

Parafuso 15x15

Parafuso 100x100

Parafuso 110x110

 

Resultado encontrado:

Parafuso 100x100

Parafuso 110x110

Parafuso 11x11

Parafuso 15x15

 

Eu nao testei esses valores, mas o resultado é semelhante ao que esta descrito acima o que me deixou pensando: Tem como resolver isso?

EU SEI QUE poderia criar campos tipo INT para resolver, mas nao me parece viavel, alguém tem alguma solucao para isto?

 

Thanks comrades.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom eu fiz uma gambiarra aqui pra fazer o que você quer....

 

TABELA teste

campos parafuso

 

select convert(REPLACE(
       SUBSTRING(parafuso, 9)
   , 'x', '0'), signed) as id, parafuso
FROM teste order by id

 

:thumbsup:

 

Tabela Teste Resultado...

id parafuso

11011 Parafuso 11x11

15015 Parafuso 15x15

1000100 Parafuso 100x100

1100110 Parafuso 110x110

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema é que nem sempre sao parafusos, podem ser placas, etc...

Outrora vou utilizar este codigo para ver se encontro uma solucao

obrigado pela ajuda macielcr7

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se seguir o padrao que você colocou

 

nome dimesaoXdimensao

 

select convert(REPLACE(
       SUBSTRING_INDEX(descricao, " ", -1)
   , 'x', '0'), signed) as id, descricao
FROM teste order by id

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se seguir o padrao que você colocou

 

nome dimesaoXdimensao

 

select convert(REPLACE(
       SUBSTRING_INDEX(descricao, " ", -1)
   , 'x', '0'), signed) as id, descricao
FROM teste order by id

 

Se for "Placa de Vídeo" baba.

 

Como é tabela, o dado "Parafuso 11X11" é montado ou é a própria descrição ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for "Placa de Vídeo" baba.

 

Como é tabela, o dado "Parafuso 11X11" é montado ou é a própria descrição ?

 

o dado é uma string, é montado diretamente pelo usuario, nao haá campos separados para os tamanhos, o tamanho somente eé adicionado no final do nome do produto de forma literal, ou seja, o usuario informa o nome completo, o nome completo, o tamanho fica complicado colocar, alguns produtos podem ter tamanho outros nao, eu poderia criar 2 campos com os tamanhos, mas sera que eé viavel? eu tenho ainda outras coisas sober o produto como unidadeMedida, material, tipo, fabricante, conjunto, etc, nada me impede de criar 2 campos, o unico inconveniente eé alterar 2000 registros para o novo modelo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vejo muita solução.

 

Deixa a ordenação como string mesmo ou cria uma coluna apenas para ordenar.

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.