oracle中number有无参数区别

Number(p, s) 声明一个定点数 p(precision)为精度,s(scale)表示小数点右边的数字个数,精度最大值为38,scale的取值范围为-84到127

Number(p) 声明一个整数 相当于Number(p, 0)

Number 声明一个浮点数 其精度为38,要注意的是scale的值没有应用,也就是说scale的指不能简单的理解为0,或者其他的数。

--举例
create table t_cs(
x number(5,2),
y number(5),
z number
);

insert into t_cs values(12.123456,12.123456,12.123456);
commit;

select * from t_cs;

--查询结果:12.12   12   12.123456

 

定点数的精度(p)和刻度(s)遵循以下规则:

  • 当一个数的整数部分的长度 > p-s 时,Oracle就会报错
  • 当一个数的小数部分的长度 > s 时,Oracle就会舍入。
  • 当s(scale)为负数时,Oracle就对小数点左边的s个数字进行舍入。
  • 当s > p 时, p表示小数点后第s位向左最多可以有多少位数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入

 

posted @ 2022-02-28 16:08  bug开发工程师  阅读(225)  评论(0编辑  收藏  举报