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.

Tags: , , , , , ,

2 Responses to “Ordenar un campo varchar como numerico”

  1. 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]

    Reply to this comment
    • jmoran

      29. dic, 2009

      thanks for your comment, but it really works, you can read more about this from the official page of mysql

Leave a Reply