oracle数据库中NUMBER(2)这个2是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据库中NUMBER(2)这个2是啥意思相关的知识,希望对你有一定的参考价值。

oracle数据库中NUMBER(2)这个2是什么意思,还有 VARCHAR(50)这个50又是什么意思

我们知道number(p,s)中p表示的是整数的位数,s表示的是小数点后的位数,如果没有特别指出,比如number,系统会默认p=5,s=0,(开始打错了)同理number(2)表示只存在整数位2位,比如DEPTNO(员工所在部门编号)数据类型就是number(2)

VARCHAR是一种比CHAR更加灵活的数据类型,同样用于表示字符数据,但是VARCHAR可以保存可变长度的字符串。其中M代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。因此,对于那些难以估计确切长度的数据对象来说,使用VARCHAR数据类型更加明智。VARCHAR数据类型所支持的最大长度也是255个字符;故VARCHAR(50)表示50字符
参考技术A number(p,s)
p:1~38
s:-84~127
p>0,对s分2种情况分析:
1.
s>0
精确到小数点右边s位,并四舍五入。然后检验有效数位是否<=p;如果s>p,小数点右边至少有s-p个0填充。
2.
s<0
精确到小数点左边s位,并四舍五入。然后检验有效数位是否<=p+|s|
(有效数位:从左边第一个不为0的数算起)
============================
Datatype
Stored
Value
123.2564
NUMBER
123.2564
1234.9876
NUMBER(6,2)
1234.99
12345.12345
NUMBER(6,2)
Error
1234.9876
NUMBER(6)
1235
12345.345
NUMBER(5,-2)
12300
1234567
NUMBER(5,-2)
1234600
12345678
NUMBER(5,-2)
Error
123456789
NUMBER(5,-4)
123460000
1234567890
NUMBER(5,-4)
Error
12345.58
NUMBER(*,
1)
12345.6
0.1
NUMBER(4,5)
Error
0.01234567
NUMBER(4,5)
0.01235
0.09999
NUMBER(4,5)
0.09999
0.099996
NUMBER(4,5)
Error
====================
VARCHAR(50)
50是字符的长度为50个字节
参考技术B number(p,s)
p:1~38
s:-84~127

p>0,对s分2种情况分析:

1. s>0
精确到小数点右边s位,并四舍五入。然后检验有效数位是否<=p;如果s>p,小数点右边至少有s-p个0填充。

2. s<0
精确到小数点左边s位,并四舍五入。然后检验有效数位是否<=p+|s|

(有效数位:从左边第一个不为0的数算起)

============================
Datatype

Stored Value

123.2564

NUMBER

123.2564

1234.9876

NUMBER(6,2)

1234.99

12345.12345

NUMBER(6,2)

Error

1234.9876

NUMBER(6)

1235

12345.345

NUMBER(5,-2)

12300

1234567

NUMBER(5,-2)

1234600

12345678

NUMBER(5,-2)

Error

123456789

NUMBER(5,-4)

123460000

1234567890

NUMBER(5,-4)

Error

12345.58

NUMBER(*, 1)

12345.6

0.1

NUMBER(4,5)

Error

0.01234567

NUMBER(4,5)

0.01235

0.09999

NUMBER(4,5)

0.09999

0.099996

NUMBER(4,5)

Error
====================

VARCHAR(50) 50是字符的长度为50个字节

Oracle NUMBER 数据类型中的精度和小数位数是啥意思

【中文标题】Oracle NUMBER 数据类型中的精度和小数位数是啥意思【英文标题】:What does precision and scale means in the Oracle NUMBER data typeOracle NUMBER 数据类型中的精度和小数位数是什么意思 【发布时间】:2012-05-26 13:31:59 【问题描述】:

我一直在阅读 Oracle DB 初学者指南。精度和规模的定义相当混乱。 书上说:

number(6,3) 

Oracle allows for 2 not 6 significant digitalis.

我的问题是,6 表示精度。这意味着有效数字的数量。所以它应该接受 6 位有效数字。为什么书上说是2位有效数字

我指的书是Oracle Database 11g A Beginner's Guide by McGraw Hill Professional, Dec 18, 2008,第12页

【问题讨论】:

【参考方案1】:

查看在线Oracledoc:

p 是精度,或最大有效小数位数 数字,其中最重要的数字是最左边的非零 位,最低有效位是最右边的已知数字。 Oracle 保证数字的可移植性,精度高达 20 个 base-100 数字,相当于 39 或 40 个十进制数字 取决于小数点的位置。

s 是小数位数,或从小数点到小数点的位数 最低有效位。范围可以从 -84 到 127。

正数是右边的有效位数 小数点到并包括最低有效数字。

负数是左边的有效位数 小数点,但不包括最低有效位。为了 负刻度最低有效位在左侧 小数点,因为实际数据是四舍五入到指定的 小数点左边的位数。例如,一个 (10,-2​​) 的规格意味着四舍五入到数百。

【讨论】:

以上是关于oracle数据库中NUMBER(2)这个2是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

oracle数据库中“Number”是啥类型?

the hash for the file is not present in the specified catalog file,是啥意

Oracle数据库age number(5) 是啥意思,名字的最大长度为5个字节?还是别的啥意思。

oracle数据库中的整型是啥

oracle数据库中Number是啥类型?

Oracle中的number(10,0)是啥意思