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

Ordenar números decimales en formato cadena

Estas en el tema de Ordenar números decimales en formato cadena en el foro de Mysql en Foros del Web. Saludos amigos, la situación es la siguiente: Tengo la siguiente tabla: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original CREATE TABLE `postulante _ puntaje` (   `id ...
  #1 (permalink)  
Antiguo 13/08/2015, 07:33
 
Fecha de Ingreso: mayo-2002
Ubicación: Tarapoto Peru
Mensajes: 11
Antigüedad: 21 años, 11 meses
Puntos: 0
Ordenar números decimales en formato cadena

Saludos amigos, la situación es la siguiente:

Tengo la siguiente tabla:

Código MySQL:
Ver original
  1. CREATE TABLE `postulante_puntaje` (
  2.   `id_postulantenota` int(11) NOT NULL,
  3.   `idexamen_fk` int(11) DEFAULT NULL,
  4.   `idescuela_fk` int(11) DEFAULT NULL,
  5.   `idsede_fk` int(11) DEFAULT NULL,
  6.   `cod_postulante` varchar(10) DEFAULT NULL,
  7.   `dni` char(8) DEFAULT NULL,
  8.   `puntaje` varchar(8) DEFAULT NULL,
  9.   PRIMARY KEY (`id_postulantenota`)

Tengo en una tabla un campo varchar llamado puntaje el cual tiene números, ejem: '98.89', '76.129', '109.12', etc. El problema nace cuando quiero hacer un select de ordenación descendente con este query:
Código MySQL:
Ver original
  1. SELECT postulante_puntaje.puntaje
  2. FROM postulante_puntaje
  3. ORDER BY postulante_puntaje.puntaje DESC

Aparece por ejem: 98.89, 76.129, 109.12, en ese orden cuando debería ser 109.12, 98.89, 76.129...

Aprecio mucho la ayuda en este dilema

Saludos

Última edición por gnzsoloyo; 14/08/2015 a las 05:11
  #2 (permalink)  
Antiguo 14/08/2015, 00:00
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ordenar números decimales en formato cadena

Esto no tiene que ver con PHP, muevo tu tema a MySQL, donde seguramente te dirán que tienes que cambiar el tipo de la columna a double o similar.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 14/08/2015, 05:17
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Ordenar números decimales en formato cadena

Bueno, en realidad guardar un número decimal como VARCHAR, y encima poniéndole los separadores numéricos, ya es un error de diseño de datos, pero la he visto antes.
Pero de todos modos es posible realizar lo que pides, y en realidad hay más de una forma.
Te paso la más simple:

Código MySQL:
Ver original
  1. SELECT puntaje
  2. FROM postulante_puntaje
  3. ORDER BY CAST(puntaje AS DECIMAL(14,3)) DESC.

Te recomiendo que modifiques el tipo de dato y lo pongas como DECIMAL(14,3) por lo menos, o bien lo manejes como FLOAT (no es el mejor para tu caso, pero funcionará).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 14/08/2015, 06:57
 
Fecha de Ingreso: mayo-2002
Ubicación: Tarapoto Peru
Mensajes: 11
Antigüedad: 21 años, 11 meses
Puntos: 0
Respuesta: Ordenar números decimales en formato cadena

Cita:
Iniciado por gnzsoloyo Ver Mensaje
bueno, en realidad guardar un número decimal como varchar, y encima poniéndole los separadores numéricos, ya es un error de diseño de datos, pero la he visto antes.
Pero de todos modos es posible realizar lo que pides, y en realidad hay más de una forma.
Te paso la más simple:

Código mysql:
Ver original
  1. select puntaje
  2. from postulante_puntaje
  3. order by cast(puntaje as decimal(14,3)) desc.

te recomiendo que modifiques el tipo de dato y lo pongas como decimal(14,3) por lo menos, o bien lo manejes como float (no es el mejor para tu caso, pero funcionará).
gracias brother, de verdad le diste al clavo, te daria un beso.... Jajaja, un abrazo:-p

Etiquetas: cadena, formato, php, select, sql, tabla
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 03:37.