`
albb0608
  • 浏览: 63880 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle数据显示保留小数点的问题

 
阅读更多
今天因为工作需要要写一个保留小数点的方法或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小数点处理

    4. **精度问题**:在进行小数点处理时需要注意浮点数运算可能带来的精度问题。 #### 五、总结 通过本文的学习,我们了解了Oracle数据库中处理小数点位数的关键函数及其应用场景。正确选择并使用这些函数可以帮助...

    基于oracle小数点前零丢失的问题分析

    - 虽然`TO_CHAR`可以解决显示问题,但请注意,如果数据再次被读取并转换回数值类型,小数点前的0可能仍然会被丢失。因此,最佳实践是在存储和检索数据时都使用适当的类型。 - 对于数据迁移或导出,也需要考虑这种...

    Oracle数据定义语言.ppt

    * 不能是 Oracle 的保留字 3. CREATE TABLE 语句 CREATE TABLE 语句用于创建表,语法为:CREATE TABLE [schema.]table (column datatype [DEFAULT expr];。其中,schema 是 optional 的,可以省略。 4. DEFAULT ...

    oracle保留两位小数解决方案

    在Oracle数据库中,处理数值类型的数据并保留特定的小数位数是常见的需求,尤其是在报表生成和数据分析场景。本文主要探讨了四种保留两位小数的方法,适用于不同的情况和需求。 1. **使用`ROUND`和`TRUNC`函数**: ...

    4-Oracle数据定义语言(DDL).pptx

    * 不能是 Oracle 的保留字 ### 4.1.3 CREATE TABLE 语句 CREATE TABLE 语句用于创建一个新表。创建表需要具备 CREATE TABLE 权限和一定的存储空间。需要指定表名、列名、列的数据类型及列的宽度。 示例: ```sql...

    Oracle数据定义语言(DDL).pptx

    - 同一用户下,对象名字不能重复,且不应使用Oracle的保留字。 - 名字不区分大小写,但建议保持一致以避免混淆。 - 在不同表中表示相同实体的列应使用相同的命名,例如部门编号DEPTNO。 3. **CREATE TABLE** ...

    使用Oracle中的时间间隔型数据

    这里的'1'表示保留小数点后一位。 时间间隔可以是正数或负数,并且可以直接与TIMESTAMP类型的数据进行加减运算,以计算新的时间点。例如,在实验管理的场景中,可以创建一个表格记录实验的开始时间(experiment_...

    oracle通过sql实现字符串转数字oracle函数

    为了解决这个问题,可以使用`TRY_TO_NUMBER()`函数(Oracle 12c及以上版本),它在转换失败时返回NULL而不是引发错误: ```sql SELECT TRY_TO_NUMBER(str_column) AS num_column FROM your_table; ``` 有时,字符...

    oracle求整

    这个方法可用于处理类似Oracle数据库中的数据格式问题。 ### 总结 通过对Oracle中的`TRUNC`函数以及其他相关函数的学习和应用,我们可以有效地处理数字的取整以及格式化问题。这些方法不仅适用于Oracle数据库中的...

    2011Oracle笔记(李兴华视屏教程笔记)

    5. Oracle数据类型,如NUMBER、VARCHAR2、DATE,这些都是在创建表和列时定义数据类型的常见选项。而NUMBER(7,2)和NUMBER(4)则代表了数值的存储格式,即最多7位数字,其中小数点后保留2位,以及一个固定宽度为4位的...

    Oracle数据库开发之函数概述

    如果m为正数,则保留小数点后m位;如果m为负数,则保留小数点前m位;若省略m,则默认为0,即保留整数。取整函数包括CEIL(n)取最大整数值和FLOOR(n)取最小整数值。常用的计算函数有ABS(n)取绝对值,MOD(m,n)计算余数...

    Oracle2表基本操作

    `:仅清除表中的数据,保留表结构,不写入重做日志,数据不可恢复。 - **示例**:`DROP TABLE student;` 或 `TRUNCATE TABLE student;` **8. 插入数据** - **语法**:`INSERT INTO 表名 (列1, 列2, ...) VALUES (值...

    Oracle SQL function.ppt

    Oracle SQL 函数是数据库管理中不可或缺的一部分,它们用于处理和操作数据,提供了一种强大的工具集来执行各种计算、转换和数据提取任务。在Oracle 8i版本中,SQL内置函数涉及了数字格式化和日期格式化等多个方面。 ...

    关于数据库中保留小数位的问题

    在数据库管理中,保留小数位是一个常见的需求,特别是在存储财务数据、精确度要求高的科学计算或者统计信息时。正确地处理小数位可以确保数据的准确性和一致性。以下是对数据库中保留小数位问题的深入探讨。 首先,...

    Oracle内置函数大全

    - **9.99**:此格式指定小数点后的位数,例如在`9.99`中,数字将被格式化为保留两位小数的形式。 - **9D99**:其中的“D”标定了小数点的位置,并且这个小数点是由`NLS_NUMERIC_CHARACTER`参数定义的。 - **$999999....

    Oracle知识综合整理.docx

    标准命名方式要求以字母开头,长度不超过30个字符,可包含字母、数字、下划线、美元符号和井号,不能与同一用户下的其他对象重名或使用Oracle保留字。非标准命名方式允许使用任何字符,但需用双引号包围。 创建表...

    SQLServer多种去除尾数多余的0

    在SQL Server中,处理数值类型的数据时,特别是浮点数(float)或定点数(decimal, numeric),我们可能会遇到一个问题:当数值末尾有过多的零时,它们并不总是直观地显示出来。尤其是在进行计算或者存储后,这些零...

Global site tag (gtag.js) - Google Analytics