![]() |
order by sql tengo una duda con el order by, cuando quieres ordenar numeros, sql no los odenena bien, por ejemplo cuando escribo esto: select * from tabla order by id ASC y los id van del 1 al 20 aparece ordenado pero parece que no distingue entre el numero de cifras que tiene un numero, aparece antes el 10 al 19 que el 2, como puede hacer para que aparescan bien ordenados, del 1 al 20. |
Pues cuando he leido tu pregunta me ha parecido algo raro, porque a mi eso no me ha pasado. Yo uso MySql. He ido al phpAdmin y he hecho una prueba y me ordena los ids perfectamente. No sé si es porque usas otra base de datos... |
esos eran numerod de ejemplo, intenta con 1234567, 23456 y 790, a mi me aparecerian en ese orden, aunque le pusiera ASC |
Hmm... Ya checaste el formato del campo de ID ..? longitud de caracteres, único, autonumerico, sin signo, etc...? Que formato de BD de datos usas (mySQL?) Saludos Jorge Garza |
Eso suena a que le campo id es un texto, y claro.... para un texto 12 es mayor que 2, tienes algunas opciones, convertir ese campo en numérico, hacer que la select ordene ese campo como si fuera numérico. select * from tabla order by convert(int, id) ASC o actualizar la información de la tabla y rellenar con ceros por la izquierda, hasta una longitud determinada, así 012, sería mayor que 002 :-) Estas opciones tienen su peligro, si es una tabla que ya tiene información y aplicaciones trabajando con ella, puede que alguno deje de funcionar, si conviertes esos datos a numéricos, además, si existiera algún texto, no lo convertiría, y perderías información. Si haces la select convirtiendo en numérico, te dará un error si encuentra un texto y no lo puede convertir, y si pones los ceros delante, el problema de datos que pierdan relación lo tendrías igual que en el priimer caso Un saludo y suerte :adios: |
gracias por la ayuda |
| La zona horaria es GMT -6. Ahora son las 10:44. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.