当前位置: 代码迷 >> 综合 >> DECIMAL NUMERIC
  详细解决方案

DECIMAL NUMERIC

热度:33   发布时间:2024-01-17 03:12:21.0

DECIMALNUMERIC类型在MySQL中视为相同的类型。它们用于保存必须为确切精度的值,例如货币数据。当声明该类型的列时,可以(并且通常要)指定精度和标度;例如:

salary DECIMAL(5,2)

在该例子中,5是精度,2是标度。精度表示保存值的主要位数,标度表示小数点后面可以保存的位数。

MySQL 5.1中以二进制格式保存DECIMALNUMERIC值。

标准SQL要求salary列能够用5位整数位和两位小数保存任何值。因此,在这种情况下可以保存在salary列的值的范围是从-999.99999.99

在标准SQL中,语法DECIMAL(M)等价于DECIMAL(M,0)。同样,语法DECIMAL等价于DECIMAL(M,0),可以通过计算确定M的值。在MySQL 5.1中支持DECIMALNUMERIC数据类型的变量形式。M默认值是10

DECIMALNUMERIC的最大位数是65,但具体的DECIMALNUMERIC列的实际范围受具体列的精度或标度约束。如果此类列分配的值小数点后面的位数超过指定的标度允许的范围,值被转换为该标度。(具体操作与操作系统有关,但一般结果均被截取到允许的位数)

drop table if exists test;/*==============================================================*/
/* Table: test                                                  */
/*==============================================================*/
create table test
(salary               decimal(5,2),consume              numeric(5,3)
);/* salary 总共有5位,小数位占2为,整数位占3位.consume总共有5位,小数位占3为,整数位占2位.*/insert test(salary, consume) values(16.6, 56.12);select * from test;+--------+---------+
| salary | consume |
+--------+---------+
|  16.60 |  56.120 |
+--------+---------+



  相关解决方案