PHP - imposible ordenar año letras numero

   
Vista:

imposible ordenar año letras numero

Publicado por pepe (2 intervenciones) el 10/01/2018 20:00:37
Hola a todos compañeros,
estoy volviendome un poco loco para poder ordenar de una forma sencilla un campo de mysql en mi programa php.
El campo tiene la siguiente estructura:

AñoLetrasNumero

Ejemplo:

17ABC10
17ABC11
18ABC1
etc.

Este sería el orden correcto.
He probado usando "order by length(numero), numero" que entiendo que primero te lo ordena según longitud de menos a mas y luego por el numero. Esto me sirve si todos los campos tienen la misma longitud, pero en este caso me pone el 18ABC1 primero. Si lo hago al reves "order by numero, length(numero)" me pone primero el 18ABC10 que el 18ABC2, en fin que no se que mas probar

Hay alguna forma sencilla de hacer esto?

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

imposible ordenar año letras numero

Publicado por Gonzalo (491 intervenciones) el 10/01/2018 21:04:08
no se como hisiste el query, pero si lo que necesitas es que se ordenen asi:

18ABC1
18ABC2
18ABC10
18ABC11

entonces mejor ordena primero en base a los primeros 5 caracteres (substring), y los ultimos 2 (otro substring) los ordenas casteando a numero.

salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

imposible ordenar año letras numero

Publicado por pepe (2 intervenciones) el 11/01/2018 08:29:09
Hola Gonzalo, no tengo mucha idea de sql, pero el query era con el order by que comentaba en mi primer mensaje. Podrías ayudarme con lo del substring? es posible hacerlo a nivel de sql? o tendría que programarlo en php?

Desde ya muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

imposible ordenar año letras numero

Publicado por gonzalo (491 intervenciones) el 12/01/2018 04:28:23
buenos dias don pepe

de hecho la orden es en el query

es algo asi como

SELECT SUBSTRING('Campo',5,6) from Tabla

intentalo para que lo comprendas mejor

ahora bien, el query seria mas o menos asi

select
*
from Tabla
order by SUBSTRING('Campo',1,5), cast(Substring(campo,6,2) as int)

salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar