GBase8a数据类型之DECIMAL

    DECIMAL[(M[, D])]代表一个精确值,它所存储的数值范围是-(1E+M -1)/(1E+D)
到(1E+M -1)/(1E+D)。
    在 DECIMAL[(M[, D])]数据类型中,M 是总位数,支持的最大长度为 65;D 是小数点后面的位数,支持的最大长度为 30。
    在不需要过高的数字精度的场景中,DECIMAL 中的 M 可以定义为 M≤18,这样
可以获得更好的查询性能。
    DECIMAL 用来存储那些严格要求数字精度的数据,例如货币数据,在这种情况
下需要指定精度:
    salary DECIMAL(5,2)
    在 DECIMAL(5,2)中,5 表示总位数(整数位和小数位的位数总和),2 是小数位数。可以存储在 salary 列的最小值是-999.99,最大值是 999.99。
    DECIMAL 值的最大范围受限于给定的精度和小数范围。超过小数范围时,会按
四舍五入的原则截断为设定小数位数。
    在定义 DECIMAL 数据列时,如果 M 和 D 同时省略,则 M 取值为 10,D 取值为
0,即 DECIMAL(10,0),如果只指定 M 值,省略 D 值,那么插入一个非整数值的
数字时,将按照四舍五入的原则截取到整数位。

  • 示例 1:定义的列数据类型为 DECIMAL(18,5)。
    示例中用到的表及数据:
CREATE TABLE products(productnum DECIMAL(18,5)); 
INSERT INTO products(productnum) VALUES(19000.44365); 
 
gbase> DESC products;
+------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| productnum | decimal(18,5) | YES | | NULL | |
+------------+---------------+------+-----+---------+-------+
1 row in set
gbase> SELECT productnum FROM products;
+-------------+
| productnum |
+-------------+
| 19000.44365 |
+-------------+
1 row in set
  • 示例 2:定义的列数据类型为 DECIMAL,M 和 D 均省略,那么 M 默认值为
    10,D 默认值为 0。
gbase> CREATE TABLE products(productnum DECIMAL); 
Query OK, 0 rows affected 
 
gbase> DESC products;
+------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| productnum | decimal(10,0) | YES | | NULL | |
+------------+---------------+------+-----+---------+-------+
1 row in set
  • 示例 3:定义列数据类型为 DECIMAL(M,D),插入的数据超出总位数 M
    时,报告错误信息;超出精度 D 时,则小数部分四舍五入。
gbase> CREATE TABLE products(productnum DECIMAL(8,3)); 
Query OK, 0 rows affected
gbase> INSERT INTO products(productnum) VALUES(191220.443); 
ERROR 1264 (22003): Out of range value for column 'productnum' at row 1
gbase> INSERT INTO products(productnum) VALUES(19122.4436); 
Query OK, 1 row affected, 1 warning
gbase> SELECT productnum FROM products; 
+------------+
| productnum |
+------------+
| 19122.444 |
+------------+
1 row in set
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值