oracle判断number⼤⼩,oracle中number型字段长度、精度及
实际存储状态。。。
相关知识回顾:
有效数位:从左边第⼀个不为0的数算起,⼩数点和负号不计⼊有效位数。
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|
案例测试:
hongsy;
名称 是否为空? 类型
----------------------------------------------------- -------- ------------
NUM1 NUMBER
NUM2 NUMBER(2)
NUM3 NUMBER(5,3)
NUM4 NUMBER(5,-2)
into hongsy(num1) values(1111111111);
已创建 1 ⾏。
;
提交完成。
into hongsy(num2) values(11);
已创建 1 ⾏。
into hongsy(num2) values(111);
insert into hongsy(num2) values(111)
*
ERROR 位于第 1 ⾏:
ORA-01438: 值⼤于此列指定的允许精确度
into hongsy(num2) values(-11);
已创建 1 ⾏。
into hongsy(num2) values(-111);
insert into hongsy(num2) values(-111) *
ERROR 位于第 1 ⾏:
ORA-01438: 值⼤于此列指定的允许精确度into hongsy(num2) values(-11.1);
已创建 1 ⾏。
into hongsy(num2) values(-11.1111);已创建 1 ⾏。
;
提交完成。
num2 from hongsy;
NUM2
----------
11
-
11
-11
-11
已选择8⾏。
into hongsy(num3) values(111);
insert into hongsy(num3) values(111) *
ERROR 位于第 1 ⾏:
ORA-01438: 值⼤于此列指定的允许精确度into hongsy(num3) values(11);
已创建 1 ⾏。
into hongsy(num3) values(-11);
已创建 1 ⾏。
into hongsy(num3) values(-111);
insert into hongsy(num3) values(-111) *
ERROR 位于第 1 ⾏:
ORA-01438: 值⼤于此列指定的允许精确度into hongsy(num3) values(11.111);
已创建 1 ⾏。
into hongsy(num3) values(11.1111);
已创建 1 ⾏。
;
提交完成。
oracle四舍五入num3 from hongsy;
NUM3
-
---------
11
-11
11.111
11.111
已选择12⾏。
into hongsy(num4) values(1111);
已创建 1 ⾏。
into hongsy(num4) values(111111);
已创建 1 ⾏。
into hongsy(num4) values(11111111);
insert into hongsy(num4) values(11111111) *
ERROR 位于第 1 ⾏:
ORA-01438: 值⼤于此列指定的允许精确度
;
提交完成。
num4 from hongsy;
NUM4
----------
1100
111100
已选择14⾏。
into hongsy(num4) values(1111111);
已创建 1 ⾏。
;
提交完成。
num4 from hongsy;
NUM4
----------
1100
111100
1111100
已选择15⾏。
table hongsy1 (num1 number(39));
create table hongsy1 (num1 number(39))
*
ERROR 位于第 1 ⾏:
ORA-01727: 数字精度说明符超出范围(1 到 38) table hongsy1 (num1 number(38,128));
create table hongsy1 (num1 number(38,128)) *
ERROR 位于第 1 ⾏:
ORA-01728: 数字标度说明符超出范围(-84 到 127)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。