Tema: Ordenar
Ver Mensaje Individual
  #8 (permalink)  
Antiguo 02/12/2013, 16:20
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Ordenar

Cita:
Iniciado por JeMaGa Ver Mensaje
Gracias, necesito ingresar el valor asi por que el 13 es 2013 el proximo año sera 14-0001 es 2014 por eso lo almaceno de esa forma.

osea leonardo_josue que tendria que cambiar todas las tabla y agregarles un campo mas quitando el - y separando el valor 13 en un campo 10000 en otro ? y en caso tal que lo quiera hacer con cast como se podría hacer??
En realidad te conviene, como ya te han sugerido, almacenarlos en dos campos (que por otro lado, guardar el año con dos dígitos... es una muy mala opción).
Y en todo caso, reconstruir un numero puesto como AA-NNNNNN, es simplemente usar un CONCAT, probablemente junto a un LPAD(), si es que se necesita.
CAST sólo no es totalmente funcional para tu caso, sino en todo caso un SUBSTRING_INDEX().
Código MySQL:
Ver original
  1. SELECT a, b, c, d
  2. FROM tabla
  3. ORDER BY CAST(SUBSTRING_INDEX(campo, '-', -1) AS UNSIGNED), CAST(SUBSTRING_INDEX(campo, '-', 1) AS UNSIGNED);
Como verás, sería muchísimo más simple escribir
Código MySQL:
Ver original
  1. SELECT a, b, c, d
  2. FROM tabla
  3. ORDER BY campo1, campo2;
Es muy habitual en los que recién se inician pesar en lo que se ve, y no en lo que se debe almacenar, que no son exactamente la misma cosa. Es una parte de la diferencia entre razonar como programador y como DBA.
Lo que al programador le parece fácil, porque es "simple", luego trae muuuuchas complicaciones en las consultas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)