因为工作需要要写一个保留小数点的方法或SQL语句,number类型的小数,如果是0.5或-0.5,打印的时候就会显示成.5或-.5,显然不是我想要的,自己就简单的写了一个,功能可以实现了,效率不高,高手们多多指教。
- DECLARE
- NUM1 NUMBER := 1/4; -- 要进行舍入的数字
- NUM2 NUMBER; -- 中间变量
- IND NUMBER; -- 小数点位置
- PARAM NUMBER := 3; --精度,保留的小数位数,由于number精度限制,最大精度为38位
- RESULT VARCHAR2(10000);
-
- BEGIN
- NUM2 := ROUND(NUM1, PARAM); -- 对入参数字按照精度进行四舍五入
- IND := INSTR(NUM2, "."); -- 获得‘.’的位置
- RESULT := NUM2;
- IF IND = 0 THEN -- 没有找到小数点,说明是整数
- RESULT := RESULT || "."; -- 在后面补个小数点
- RESULT := RPAD(RESULT, LENGTH(RESULT) + PARAM, "0"); -- 按照精度对结果进行补0操作
- ELSE -- 找到小数点
- -- 小数的时候
- IF NUM2 < 1 THEN
- -- 小于1的小数,要对小于1的小数进行首位补零
- IF NUM2 > 0 THEN
- RESULT := "0" || NUM2;
- ELSIF (-1 < NUM2 AND NUM2 < 0) THEN
- RESULT := "-0" || SUBSTR(RESULT, IND);
- ELSE
- RESULT := NUM2;
- END IF;
- END IF;
- IND := INSTR(RESULT, ".");
- RESULT := RPAD(RESULT, IND + PARAM, "0");
- END IF;
- DBMS_OUTPUT.put_line(RESULT);
- END;
- /
更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Oracle 11g 中的SCN多长时间增加一次Oracle 10g用ASH生成性能报告相关资讯 Oracle数据库入门教程
- 从Oracle817导入到Oracle10.2.0.4 (10/06/2012 10:51:17)
- Oracle出现“TNS: 监听程序无法分 (10/05/2012 11:50:50)
- Oracle中强行断开用户连接的方法 (10/04/2012 21:01:35)
| - Oracle入门教程之数据库实例管理 (10/05/2012 11:53:50)
- ORA-12519: TNS:no appropriate (10/05/2012 11:43:50)
- Oracle 数据库入门教程 PPT (06/09/2012 14:38:16)
|
本文评论 查看全部评论 (0)