PL/SQL number型数据
2007-03-21 00:00
295 查看
number(<p>,<s>)
精度p取值范围1~38
有效位s取值范围-84~127
最高整数位数=p-s
s正数,小数点右边指定位置开始四舍五入
s负数,小数点左边指定位置开始四舍五入
s是0或者未指定,四舍五入到最近整数
当p小于s时候,表示数字是绝对值小于1的数字,且从小数点右边开始的前s-p 位必须是0,保留s位小数。
--num_test start------------------------------------------------
Connected to Oracle9i Enterprise Edition Release 9.0.1.1.1
Connected as aspire
SQL>
SQL> SET linesize 1000;
SQL> CREATE TABLE hjm_num_test
2 (a NUMBER,
3 b NUMBER(5,2),
4 c NUMBER(5,-2),
5 d NUMBER(5,0),
6 e NUMBER(5),
7 f NUMBER(2,5));
Table created
SQL> INSERT INTO hjm_num_test
2 (a,b,c,d,e,f) VALUES(123.3333,123.3333,123.3333,123.3333,123.3333,-0.0003);
1 row inserted
SQL> INSERT INTO hjm_num_test
2 (a,b,c,d,e,f) VALUES(197.9333,197.9333,197.9333,197.9333,197.9333,0.00012567);
1 row inserted
SQL> COMMIT;
Commit complete
SQL> SELECT * FROM hjm_num_test;
A
B
C
D
E
F
1
123.3333
123.33
100
123
123
-0.00030
2
197.9333
197.93
200
198
198
0.00013
(在pl/sql dev sql窗口显示)
--num_test end--------------------------------------------------------
似乎结果很正确,可是现在出来一个问题,当我不在pl/sql dev窗口运行,我在isqlplus中运行,结果就有点不一样了,注意,第1行的F列:
A
B
C
D
E
F
123.3333
123.33
100
123
123
-.0003
197.9333
197.93
200
198
198
.00013
(在isqlplus中显示)
它舍去了末尾的0!在sqlplus下测试也是同样的效果。
不过本人的意向应该是还是保留那个0的,因为number(2,5)它毕竟指定了有效位是5位。
精度p取值范围1~38
有效位s取值范围-84~127
最高整数位数=p-s
s正数,小数点右边指定位置开始四舍五入
s负数,小数点左边指定位置开始四舍五入
s是0或者未指定,四舍五入到最近整数
当p小于s时候,表示数字是绝对值小于1的数字,且从小数点右边开始的前s-p 位必须是0,保留s位小数。
--num_test start------------------------------------------------
Connected to Oracle9i Enterprise Edition Release 9.0.1.1.1
Connected as aspire
SQL>
SQL> SET linesize 1000;
SQL> CREATE TABLE hjm_num_test
2 (a NUMBER,
3 b NUMBER(5,2),
4 c NUMBER(5,-2),
5 d NUMBER(5,0),
6 e NUMBER(5),
7 f NUMBER(2,5));
Table created
SQL> INSERT INTO hjm_num_test
2 (a,b,c,d,e,f) VALUES(123.3333,123.3333,123.3333,123.3333,123.3333,-0.0003);
1 row inserted
SQL> INSERT INTO hjm_num_test
2 (a,b,c,d,e,f) VALUES(197.9333,197.9333,197.9333,197.9333,197.9333,0.00012567);
1 row inserted
SQL> COMMIT;
Commit complete
SQL> SELECT * FROM hjm_num_test;
A
B
C
D
E
F
1
123.3333
123.33
100
123
123
-0.00030
2
197.9333
197.93
200
198
198
0.00013
(在pl/sql dev sql窗口显示)
--num_test end--------------------------------------------------------
似乎结果很正确,可是现在出来一个问题,当我不在pl/sql dev窗口运行,我在isqlplus中运行,结果就有点不一样了,注意,第1行的F列:
A
B
C
D
E
F
123.3333
123.33
100
123
123
-.0003
197.9333
197.93
200
198
198
.00013
(在isqlplus中显示)
它舍去了末尾的0!在sqlplus下测试也是同样的效果。
不过本人的意向应该是还是保留那个0的,因为number(2,5)它毕竟指定了有效位是5位。
相关文章推荐
- PL/SQL number型数据
- PL/SQL number型数据
- PL/SQL数据类型和效率分析
- 全面探讨PL/SQL的复合数据类型
- PL/SQL 数据生成器
- PL/SQL Developer 导出数据脚本、数据
- 使用PL/SQL将EXCEL数据导入到ORACLE数据库中
- PL/SQL Developer导入、导出表结构和表数据
- PL/SQL Developer 生成数据
- Oracle 学习:PL/SQL循序渐进全面学习教程--课程十三 使用组合数据类型* 游标操纵数据
- 使用PL/SQL导入数据(cvs和excel)
- oracle pl/sql 程序块,游标,生成测试数据
- 《Oracle PL/SQL 完全自学手册》读书笔记 第5章 数据的增、删、改-- 5.3.4 TRUNCATE与DELETE的区别
- PL/SQL Developer导入、导出表结构和表数据
- 为什么数据可以从pl/sql查出来而使用ado.net查询,结果却是空?
- PL/SQL的数据类型和常用函数
- ORACLE用PL/SQL提交数据后执行回滚的方法
- PL/SQL数据类型关注点
- PL/SQL数据开发那点事
- PL/SQL学习(复合数据类型与游标)