Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] ordenar por parte de un campo

Estas en el tema de ordenar por parte de un campo en el foro de Mysql en Foros del Web. Hola, he estado dando vuelta a un asunto y no encuentro solucion, lo que quiero es ordenar por un campo pero que considere todo menos ...
  #1 (permalink)  
Antiguo 06/02/2013, 10:04
 
Fecha de Ingreso: febrero-2011
Mensajes: 108
Antigüedad: 13 años, 1 mes
Puntos: 4
ordenar por parte de un campo

Hola, he estado dando vuelta a un asunto y no encuentro solucion, lo que quiero es ordenar por un campo pero que considere todo menos el ultimo caracter del campo... lo que he encontrado por la web es la funcion substring de mySQL pero funciona al reves de lo que quiero:

substring('ejemplo',4,3)

El cual daria el resultado 'mpl' pero yo quiero en 'ejemplo' devolver 'ejempl' e indistintamente si el campo tiene mas caracteres devolver siempre todo menos el ultimo como 'ejemplos' me devuelva 'ejemplo'
  #2 (permalink)  
Antiguo 06/02/2013, 10:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: ordenar por parte de un campo

Código MySQL:
Ver original
  1. ... ORDER SUBSTRING( campo, 1, CHAR_LENGTH( campo ) -1 )
  #3 (permalink)  
Antiguo 06/02/2013, 22:40
 
Fecha de Ingreso: febrero-2011
Mensajes: 108
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: ordenar por parte de un campo

Muchas gracias me funciona, pero al final no quiere hacer lo que necesito que haga, logre esto:

Código:
select id, rut,substring(rut,1,char_length(rut)-1) as orden from proveedor order by orden desc
Y quiero que me ordene el rut por el numero, evidentemente le quito el digito verificador que puede ser k. Ahora en MySQL el campo que contiene a rut es varchar por lo que por ahi creo que esta el problema.

Por lo que he averiguado en internet puedo cambiar por ejemplo "orden" a integer con la funcion CAST(), de esta forma CAST(orden, integer), lo malo es que no se como adecuarlo a mi consulta, intente esto pero no funciona:

Código:
select id, CAST((rut,substring(rut,1,char_length(rut)-1) as orden), integer) from proveedor order by orden desc
  #4 (permalink)  
Antiguo 07/02/2013, 00:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: ordenar por parte de un campo

¿Has probado así?
Código MySQL:
Ver original
  1. SELECT id, rut FROM proveedor
  2. ORDER BY CAST(SUBSTRING(rut,1,CHAR_LENGHT(rut)-1) AS UNSIGNED) DESC
  #5 (permalink)  
Antiguo 07/02/2013, 09:23
 
Fecha de Ingreso: febrero-2011
Mensajes: 108
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: ordenar por parte de un campo

El codigo que pusiste no funciona, trate de arreglarlo asi

Código:
SELECT id, rut FROM proveedor 
ORDER BY CAST((SUBSTRING(rut,1,CHAR_LENGHT(rut)-1) AS orden), INTEGER) DESC
pero tampoco funciona, alguna otra idea?
  #6 (permalink)  
Antiguo 07/02/2013, 16:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: ordenar por parte de un campo

Perdona,
una cambio de orden entre dos letras:
Código MySQL:
Ver original
  1. SELECT id, rut FROM proveedor
  2.     ORDER BY CAST(SUBSTRING(rut,1,CHAR_LENGTH(rut)-1) AS UNSIGNED) DESC
  #7 (permalink)  
Antiguo 08/02/2013, 08:37
 
Fecha de Ingreso: febrero-2011
Mensajes: 108
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: ordenar por parte de un campo

Y cual seria la diferencia?
  #8 (permalink)  
Antiguo 08/02/2013, 10:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: ordenar por parte de un campo

escribí en la primera CHAR_LENGHT en lugar de CHAR_LENGTH
  #9 (permalink)  
Antiguo 09/02/2013, 12:46
 
Fecha de Ingreso: febrero-2011
Mensajes: 108
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: ordenar por parte de un campo

Te pasaste muchas gracias por tu respuesta, ahora funciona perfecto!!

Etiquetas: campo, parte, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:10.