NUMBER
是变长、精确的数值类型,占 4~40 字节存储空间,其中 4 字节存放 NUMBER
的元数据信息,0~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
位,四舍五入。然后检验有效位是否小于等于 p
。s
位,四舍五入。然后检验有效位是否小于等于 p + |s|
。注意:
示例 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 |
在文档使用中是否遇到以下问题
更多建议
匿名提交