Ordenar un campo varchar como numerico
Publicado el 23. dic, 2009 by jbomba in Mysql
Uno de mis pequeños problemas que me encontre fue el ordenar un campo de tipo varchar como si fuese numerico y la solucion es muy simple, cuando hacemos una consulta a nuestra base de datos por ejemplo estemos consultado un listado de facturas y el mismo es alfanumerico pero queremos que a la hora que se muestre este ordenado numericamente.
Si el campo es varchar y le solicitamos a mysql ordenar DESC la factura 99 sera mayor que la factura 100
debido a que el campo es varchar y ordena por el primer caracter en este caso 9 > 1.
Solucion
SELECT … ORDER BY cast(campo_varchar as unsigned) DESC
La solucion simple, usar CAST() para convertir una cadena de caracteres a un conjunto de caracteres distinto.
Formato
CAST(cadena_de_caracteres AS tipo_de_datos CHARACTER SET nombre_de_conjunto_de_caracteres)
Referencia:function cast()
Ahora la factura 100 sera mayor que la factura 99.




Nicolas
28. dic, 2009
Hello,
Not sure that this is true:), but thanks for a post.
Have a nice day
[url=http://www.japellow.com/]Nicolas[/url]
jmoran
29. dic, 2009
thanks for your comment, but it really works, you can read more about this from the official page of mysql