jueves, 22 de julio de 2010

MySQL y Tipos Numéricos

Si estas teniendo problemas con campos de tipo numérico al realizar consultas, existe la posibilidad de que el tipo de campo que estas utilizando no sea el adecuado para lo que pretendes almacenar en el, es importante saber y comprender las características que hacen diferente a un tipo de valor de otro, con esto ahorraremos tiempo y no tendremos sorpresas en los resultados de las consultas.

La sugerencia es analizar los posibles usos para el cual será utilizado el valor que pretendemos almacenar.


INT, INTEGER, SMALLINT deben ser utilizados para los valores exactos como pueden ser “número de hijos”, “numero de recamaras”, “id_registro” por citar algunos ejemplos.

FLOAT, REAL, DOUBLE PRECISION, almacenan valores aproximados en decimales, redondean su valor al ser almacenados, es importante hacer notar que aunque almacenes un valor absoluto (6.0, 100.0) estos formatos de numero almacenan en la base de datos números adicionales en los decimales por lo que el valor 100.0 puede ser almacenado como 100.000000000045 debido a que son números aproximados. Estos tipos de datos pueden ser utilizados para guardar resultados de operaciones como pueden ser el “raiz_cuadrada”, “coseno”, “integral”.

Es muy común obtener resultados no deseados por el uso incorrecto de estos tipos de valores, cuando estamos buscando por rangos de valores excluyentes de los límites.


DECIMAL, DEC almacenan números enteros y de coma flotante exactos, no redondean su valor se almacenan tal cual como hayan sido proporcionados, es utilizados para guardar cantidades exactas de coma flotante. Algunos ejemplos de su uso pueden ser “salario”, “IVA”, “ISR”.

Espero les sirvan estas observaciones, aunque un tanto básicas en apariencia, aunque yo pienso que son de esos detalles que a veces omitimos durante el diseño de nuestras bases de datos.