tipos tipo precio para mostrar ejemplos ejemplo dinero decimales datos dato sql mysql

tipo - Los valores decimales(3,2) en MySQL son siempre 9,99



tipos de datos en mysql workbench (2)

Tengo un campo, justsomenum, de tipo decimal (3,2) en MySQL que parece tener siempre valores de 9.99 cuando inserto algo como 78.3. ¿Por qué?

Así es como se ve mi mesa:

mysql> describe testtable; +---------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | firstname | varchar(20) | YES | | NULL | | | lastname | varchar(20) | YES | | NULL | | | justsomenum | decimal(3,2) | YES | | NULL | | +---------------+--------------+------+-----+---------+----------------+

Cuando inserto algo como esto y lo selecciono:

mysql> insert into testtable (firstname, lastname, justsomenum) values ("Lloyd", "Christmas", 83.5);

Obtengo 9.99 cuando selecciono.

mysql> select * from testtable; +----+-----------+-----------+---------------+ | id | firstname | lastname | justsomenum | +----+-----------+-----------+---------------+ | 1 | Shooter | McGavin | 9.99 | | 2 | Lloyd | Christmas | 9.99 | | 3 | Lloyd | Christmas | 9.99 | | 4 | Lloyd | Christmas | 9.99 | +----+-----------+-----------+---------------+ 4 rows in set (0.00 sec)

Este es MySQL 5.0.86 en Mac OS X 10.5.8.

¿Algunas ideas? Gracias.


El valor máximo para el decimal(3, 2) es 9.99, por lo que cuando intenta insertar algo más grande, se limita a 9.99. Intente decimal(5, 2) o algo más si desea almacenar números más grandes.

El primer argumento es el número total de dígitos de precisión, y el segundo argumento es el número de dígitos después del punto decimal.


En versiones anteriores, MySQL DECIMAL (3,2) significaba 3 enteros a la izquierda del DP y 2 a la derecha.

Los desarrolladores de MySQL lo han cambiado, por lo que la primera propiedad (en este caso ''3'') es el número completo de enteros en el decimal (9.99 son tres números), y la segunda propiedad (en este caso ''2'') permanece igual - El número de decimales.

Es un poco confuso. Básicamente, para los campos DECIMAL, el número de enteros que desee antes del DP debe agregarse al número de enteros que desee después del DP y establecerlo como su primera opción.

Entonces, como ya se ha dicho, si intenta ingresar un número mayor que el valor máximo para el campo, MySQL lo recorta por usted. El problema aquí es su configuración de MySQL. Entro en más detalle sobre esto en mi blog .