codecamp

OceanBase NUMBER 数据类型

NUMBER​ 是变长、精确的数值类型,占 4~40 字节存储空间,其中 4 字节存放 ​NUMBER​ 的元数据信息, 36 字节存放 ​NUMBER​ 的具体数值。可以存储零、浮点数、正的定点数和负的定点数,其绝对值范围 1.0 × 10-130 ~ 1.0 × 10126(不包括 1.0 × 10126)。如果您指定的算术表达式的绝对值大于或等于 1.0 × 10-130,OceanBase 会返回错误。

NUMBER​ 数据类型具有较好的数据精确度、通用性强、可移植性强,运算效率相对浮点类型偏低。

语法

NUMBER [(p[s])]

参数

参数

取址范围

说明

p

1~38

表示精度,最大有效十进制数字,其中最高有效数字是最左边的非零数字,最低有效数字是最右边的已知数字。

s

-84~127

表示小数位数,从小数点到最低有效数字的位数。比例尺范围是 -84~127。

说明 
  • 若 s>0,精确到小数点右边 s 位,四舍五入。然后检验有效位是否小于等于 p。
  • 若 s<0,精确到小数点左边 s 位,四舍五入。然后检验有效位是否小于等于 p + |s|。
  • 若 s=0, 表示整数。
注意 
  • 小数位数正标度是小数点右边到最低有效位数(包括最低有效位数)的有效位数。精度和小数位都用十进制数字表示。
  • 小数位数负数标度是小数点左边的有效位数,但不包括最低有效位数。对于负比例,最低有效数字在小数点的左侧,因为实际数据四舍五入到小数点左侧的指定位数。

示例

  • 示例 1: 使用以下格式指定整数。

NUMBER(p)​ 表示精度为 ​p​ 且标度为 0 的定点数,等效于 ​NUMBER(p,0)​。

NUMBER​ 表示浮点数,缺少精度和小数位数指示符。

  • 示例 2: 使用不同的精度和小数位数存储数据。为了避免 OceanBase 存储的数据超过精度,我们需要为定点数字列指定小数位数和精度,对输入进行额外的完整性检查。但这不会强制固定定点数字列的长度。若实际存储的数据超过精度,则 OceanBase 会返回错误。如果存储的数据超过小数位数,则 OceanBase 对其进行四舍五入。

实际数据

指定为

存储为

123.89

NUMBER

123.89

123.89

NUMBER(3)

124

123.89

NUMBER(3,2)

超过精度

123.89

NUMBER(4,2)

超过精度

123.89

NUMBER(5,2)

123.89

123.89

NUMBER(6,1)

123.9

123.89

NUMBER(6,-2)

100

.01234

NUMBER(4,5)

.01234

.00012

NUMBER(4,5)

.00012

.000127

NUMBER(4,5)

.00013

.000012

NUMBER(2,7)

.000012

.0000123

NUMBER(2,7)

.000012

1.2e-4

NUMBER(2,5)

.00012

1.2e-5

NUMBER(2,5)

.00001

OceanBase 数值数据类型概述
OceanBase FLOAT 数据类型
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

OceanBase 控制台指南

OceanBase ODC 使用指南

OceanBase Web 版 ODC

OceanBase 客户端版 ODC

OceanBase Connector/J 开发者指南

OceanBase 什么是OceanBase Connector/J

OceanBase SQL 参考(MySQL 模式)

OceanBase SQL 参考(Oracle 模式)

OceanBase 基本元素

OceanBase 数据库对象

OceanBase 函数

OceanBase 单行函数

OceanBase 返回数字的字符串函数

OceanBase 通用比较函数

OceanBase 编码解码函数

OceanBase SQL 调优指南

OceanBase 相关协议

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }