oracle number(p,s)数据类型
来源:互联网 发布:萧忆情小窝是什么软件 编辑:程序博客网 时间:2024/06/03 05:02
oracle的number类型是oracle的内置类型之一,是oracle的最基础数值数据类型。在9iR2及其以前的版本中只支持一种适合存储数值数据的固有数据类型,在10g以后,才出现了两种新的数值类型。
p:精度位,precision,是总有效数据位数,取值范围是38,默认是38,可以用字符*表示38。
s:小数位,scale,是小数点右边的位数,取值范围是-84~127,默认值取决于p,如果没有指定p,那么s是最大范围,如果指定了p,那么s=0。
15:28:54 SQL> create table t (a number(5,2));
Table created.
Elapsed: 00:00:00.01
15:28:57 SQL> insert into t values(123.456);
1 row created.
Elapsed: 00:00:00.00
15:29:00 SQL> commit;
Commit complete.
Elapsed: 00:00:00.01
15:29:06 SQL> select * from t;
----------
Elapsed: 00:00:00.00
可以看到数字被四舍五入了,一共只能有p=5位有效数字,小数点右边最多只能存入s=2位有效数字,s对要存入的数据“123.456”做了四舍五入的“编辑裁剪”。
15:32:20 SQL> create table t1 (a number(5,-2));
Table created.
Elapsed: 00:00:00.01
15:34:01 SQL> insert into t1 values(123.45);
1 row created.
Elapsed: 00:00:00.00
15:34:19 SQL> insert into t1 values(12345.45);
1 row created.
Elapsed: 00:00:00.00
15:34:30 SQL> commit;
Commit complete.
Elapsed: 00:00:00.00
15:34:32 SQL> select * from t1;
----------
Elapsed: 00:00:00.01
可以看到,当s<0时,其就表示小数点左边最多能存入s=-2的绝对值2位有效数字,其实还是右边s位(s=-2<0时反向变反),s对存入的数据“123.45”和“12345.45”都做了四舍五入的“编辑裁剪”得到number(5,-2)形式的“100”“12300”。
15:38:28 SQL> create table t2(a number(5,2));
Table created.
Elapsed: 00:00:00.01
15:39:21 SQL> insert into t2 values(1234.56);
insert into t2 values(1234.56)
ERROR at line 1:
ORA-01438: value larger than specified precision allowed for this column
Elapsed: 00:00:00.01
15:39:35 SQL> create table t3(a number(5,-2));
Table created.
Elapsed: 00:00:00.01
15:40:16 SQL> insert into t3 values(12345678.9);
insert into t3 values(12345678.9)
ERROR at line 1:
ORA-01438: value larger than specified precision allowed for this column
Elapsed: 00:00:00.01
可以看到,上面的2种插入都失败了,因为精度为p=5,s=2时,表示小数点左边最多有p-s位,那么第一种情况最多有是5-2=3位,而实际上有4位故出错,第二种情况是最多有5-(-2)=7位,而实际上有8位故出错。
- oracle number(p,s)数据类型
- oracle number(p,s)数据类型
- 转:oracle number(p,s)数据类型
- oracle number(p,s)
- oracle数据库--数据类型number(p,s)的使用详解
- ORACLE的Number(p,s)
- Oracle中的NUMBER(P,S)
- oracle 中的数据类型:number(p,s) 和date类型(日期型数据)
- oracle的Number(p,s)的意义
- oracle的Number(p,s)的意义
- oracle的Number(p,s)的意义
- oracle的Number(p,s)的意义
- oracle number类型 p、s参数说明
- 【Oracle】Number(p,s)的含义
- Oracle中Number(p,s)的意义
- Oracle中Number(p,s)的意义
- Oracle中number(p,-s)的意思
- Oracle笔记——number(p,s)
- HDU 5745 La Vie en rose bitset优化dp
- win7 + VS2010 + CUDA7.5 编译OPENCV2.4.9 报错:CMake Error at cmake/OpenCVUtils.cmake:433 (string):
- C#转译序列(转载)
- android开发笔记之过滤流
- 霍夫变换
- oracle number(p,s)数据类型
- c语言正则表达式库pcre使用例子
- uboot中mmc驱动调用分析
- Error: Cannot find module 'express'
- jQuery 遍历
- 深入浅出Apache Shiro
- PHP程序中常见的错误和屏蔽PHP提示的方法(待完善)
- Http接口:客户端
- 服务器部署javaweb开发项目