首批通过分布式安全可靠测评,为关键业务系统打造
NUMBER 数据类型
更新时间:2026-07-15 22:01:30
NUMBER 数据类型可以存储零、浮点数、正的定点数和负的定点数。本文主要介绍 NUMBER 数据类型的语法、参数和使用说明。
语法
NUMBER [(p [,s])]
参数
注意
NUMBER数据类型,不支持改写参数p或s。- 小数位数正标度是小数点右边到最低有效位数(包括最低有效位数)的有效位数。精度和小数位都用十进制数字表示。
- 小数位数负数标度是小数点左边的有效位数,但不包括最低有效位数。对于负比例,最低有效数字在小数点的左侧,因为实际数据四舍五入到小数点左侧的指定位数。
| 参数 | 取址范围 | 说明 |
|---|---|---|
| p | [1,38] | 表示精度,最大有效十进制数字,其中最高有效数字是最左边的非零数字,最低有效数字是最右边的已知数字。 |
| s | [-84,127] | 表示小数位数,从小数点到最低有效数字的位数。比例尺范围是 [-84,127]。
说明
|
使用说明
NUMBER 是变长、精确的数值类型,占 4~40 字节存储空间,其中 4 字节存放 NUMBER 的元数据信息, 36 字节存放 NUMBER 的具体数值。其绝对值范围为 1.0 × 10-130 ~ 1.0 × 10126(不包括 1.0 × 10126)。如果您指定的算术表达式的绝对值大于或等于 1.0 × 10126,OceanBase 数据库会返回错误。
NUMBER 数据类型具有较好的数据精确度、通用性强、可移植性强,运算效率相对浮点类型偏低。 NUMBER [(p[s])] 中 p 一般指精度,s 一般指标度。NUMBER 数据类型使用以下格式指定整数:
NUMBER(p)表示精度为p且标度为 0 的定点数,等效于NUMBER(p,0)。NUMBER表示浮点数,缺少精度和小数位数指示符。
NUMBER 数据类型使用不同的精度和小数位数存储数据。为了避免 OceanBase 数据库存储的数据超过精度,需要为定点数字列指定小数位数和精度,对输入进行额外的完整性检查。但这不会强制固定定点数字列的长度。如果实际存储的数据超过精度,则 OceanBase 数据库会返回错误。如果存储的数据超过小数位数,则 OceanBase 数据库对其进行四舍五入。请参见下表中的示例。
| 实际数据 | 指定为 | 存储为 |
|---|---|---|
| 135.79 | NUMBER |
135.79 |
| 135.79 | NUMBER(3) |
136 |
| 135.79 | NUMBER(3,2) |
超过精度 |
| 135.79 | NUMBER(4,2) |
超过精度 |
| 135.79 | NUMBER(5,2) |
135.79 |
| 135.79 | NUMBER(6,1) |
135.8 |
| 135.79 | NUMBER(6,-2) |
100 |
| .01234 | NUMBER(4,5) |
.01234 |
| .00012 | NUMBER(4,5) |
.00012 |
| .000127 | NUMBER(4,5) |
.00013 |
| .0000012 | NUMBER(2,7) |
.0000012 |
| .00000123 | NUMBER(2,7) |
.0000012 |
| 1.2e-4 | NUMBER(2,5) |
.00012 |
| 1.2e-5 | NUMBER(2,5) |
.00001 |