`

【转】Oracle查询保留两位小数

阅读更多

原文

 

TO_CHAR(字段名,'999,999,999.99')

 

使用TO_CHAR的方式,有两个弊端,也是需要注意的地方:

 

1>整数部分的9要写的足够多,否则会错误显示,如下:

 

错误:SELECT TO_CHAR(199999999.1256,'9,999.99') FROM DUAL              --显示结果:#########
正确:SELECT TO_CHAR(199999999.1256,'999,999,999.99') FROM DUAL   --显示结果:199,999,999.13

 

2>对0这种情况要单独处理,当为0时,会显示为.00,而非0.00。如下:

 

错误:SELECT TO_CHAR(0,'9,99.99') FROM DUAL        --显示结果:.00
正确:SELECT DECODE(0,0,'0.00',TO_CHAR(199999999.1256,'999,999,999.99')) FROM DUAL    --显示结果:0.00

 

 

 

以下为保留小数处理的相关函数:

 

一、ROUND(四舍五入):ROUND( number, [ decimal_places ] )

 

描述 : 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果。
SELECT ROUND( number, [ decimal_places ] ) FROM DUAL
参数:
number : 欲处理之数值
decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 )
示例 :
select round(123.456, 0) from dual;          回传 123
select round(123.456, 1) from dual;          回传 123.5
select round(123.456, 2) from dual;          回传 123.46
select round(123.456, 3) from dual;          回传 123.456
select round(-123.456, 2) from dual;         回传 -123.46

 

当然,保留两位小数的处理,在格式要求的不是很严格的条件下,也可以用round函数。

 

在保留小数这个问题上round函数有以下弊端:

 

①当为整数时,无论如何写,最终返回的都是整数,如下:

 

SELECT ROUND(199.000,2) FROM DUAL --199

 

②返回值中不会自带千分符,如下:

 

SELECT ROUND(199999.2356,2) FROM DUAL  --199999.24

 

二、DECODE:DECODE(input_value,value,result[,value,result…][,default_result])

 

描述:DECODE函数相当于一条件语句(IF).它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回值。区别于SQL的其它函数,DECODE函数还能识别和操作空值.
DECODE(input_value,value,result[,value,result…][,default_result]);
参数:
input_value 试图处理的数值。
value  是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可用关键字NULL于之对应。
result  是一组成序偶的结果值。
default_result 未能与任何一序偶匹配成功时,函数返回的默认值。
示例:
SELECT checkup_type,
DECODE(blood_test_flag,’Y’,’Yes’,’N’,’No’,NULL,’None’,’Invalid’)
FROM checkup;

分享到:
评论

相关推荐

    oracle保留两位小数解决方案

    本文主要探讨了四种保留两位小数的方法,适用于不同的情况和需求。 1. **使用`ROUND`和`TRUNC`函数**: `ROUND(_data, 2)` 和 `TRUNC(_data, 2)` 都可以用来四舍五入或截断数值到小数点后两位。`ROUND`函数会根据...

    oracle小数点处理

    假设有一个表`sales`,包含字段`amount`(销售额),我们需要对销售额进行四舍五入处理,并保留两位小数。 - **SQL语句**: ```sql SELECT amount, ROUND(amount, 2) AS rounded_amount FROM sales; ``` - **...

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

    例如,`ROUND(10.98*10)/10`将10.98四舍五入到一位小数,结果为11。`ROUND`函数在多数数据库系统中都有提供,其第二个参数可以用来指定要四舍五入的小数位数。 2. **向上取整**:使用`CEIL`函数。例如,`CEIL(10.63...

    oracle数字的四舍五入、去尾、收尾法

    例如,为了将数字保留到两位小数后收尾: ```sql SELECT CEIL(19.021 * 100) / 100 FROM DUAL; ``` 此查询将返回 `19.03`,因为19.021乘以100后变为1902.1,然后对其使用 `CEIL()` 得到1903,最后再除以100得到...

    oracle求整

    2. **保留两位小数:** ```sql SELECT TRUNC(1/100, 2) FROM DUAL; ``` 这条语句将返回0.00,因为它保留了两位小数后进行取整。 3. **使用DECODE结合TRUNC处理特殊值:** ```sql SELECT DECODE(TRUNC(1/...

    oracle模拟试卷解读.docx

    首先,MOD(1600,10)得到的是0,然后TRUNC函数在-1的小数位数上作用,即对整数部分进行操作,0的整数部分还是0,所以TRUNC的结果还是0,最后ROUND函数保留两位小数,由于0.00和0在Oracle中被视为相同值,所以结果是0...

    ORACLE常用数值函数、转换函数

    这些函数支持的最大精度为38位小数,例如:`COS`, `COSH`, `EXP`, `LN`, `LOG`, `SIN`, `SINH`, `SQRT`, `TAN`, 和 `TANH` 支持36位小数;而 `ACOS`, `ASIN`, `ATAN`, 和 `ATAN2` 支持30位小数。 ##### 1. MOD (求...

    ORACLE SQL

    `将`salary`列中的数值保留两位小数后四舍五入。 - `TRUNC`: 截断。如`SELECT TRUNC(salary, 2) FROM employees;`将`salary`列中的数值保留两位小数后截断。 此外,还可以通过其他一些函数(如`MOD`)来进行更复杂...

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

    这不仅能确保小数点前的零得以保留,还能控制数字的显示格式,如整数部分的宽度和小数部分的精度,使数据输出更加规范和一致。 总之,Oracle数据库在处理数值类型到字符串类型转换时,需要注意数据类型的特性以及...

    Oracle函数学习资料

    在示例中,它用于书籍零售价的展示,保留一位小数。 - **TRUNC函数**:截断数字字段到指定的小数位数,不同于ROUND,它不会进行四舍五入。 3. **日期函数**(未在提供的内容中详细展开,但非常重要): - Oracle...

    SPRING IBATIS 保留IBATIS事务的配置方式

    根据提供的文件信息,本文将详细解析Spring与iBatis整合时如何保留并使用iBatis事务管理机制,以及如何在应用程序中实现手动控制事务的方法。 ### Spring与iBatis整合 Spring框架是一个全面的企业级应用开发框架,...

    Oracle数据库面试题汇总

    本资源摘要信息涵盖了Oracle数据库面试中的多个知识点,包括字符串操作函数、事务概念、系统时间查询、触发器的作用、数字函数、关系数据库系统与文件数据库系统的区别、触发器和存储过程的概念、基本 SQL 语句等。...

    ORACLE的基本函数

    - **计算金额的四舍五入**:例如,若要计算员工薪资乘以0.1234567后的金额,并保留两位小数,可以使用`round(salary*0.1234567, 2)`。 #### 数字函数trunc() `trunc()`函数用于截断数值,不进行四舍五入。它会移除...

    Oracle函数大全实例

    例如,如果你想将一个数字四舍五入并保留两位小数,你可以先使用`ROUND()`函数,然后在外部使用`TO_CHAR()`函数将其转换为字符串。 - **字符函数**: - `INITCAP()`: 首字母大写。 - `LOWER()`: 转换为全小写。 ...

    Oracle学习文档

    -- 保留两位小数 ROUND(323.2536, -2); -- 整数部分四舍五入 ``` - **截断小数位**: ```sql TRUNC(45.12); -- 截断至整数 TRUNC(45.1223, 2); -- 保留两位小数 ``` 以上内容覆盖了Oracle数据库的基础知识...

    oracle空间使用率

    4. **使用比**:计算表空间的使用比例,公式为`(D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100`,结果四舍五入保留两位小数并转换为百分比格式。 5. **空闲空间(M)**:显示每个表空间的空闲空间大小...

    oracle数据库面试题目汇总.pdf

    本资源摘要信息将涵盖 Oracle 数据库面试题目汇总的关键知识点,涵盖字符串操作函数、事务概念、查询系统时间、触发器的作用、数字函数、关系数据库系统与文件数据库系统的区别、触发器和存储过程的概念等方面。...

    oracle基础的语句教程

    Salary列则存储十进制数,最多10位整数,2位小数。 通过学习和实践这些Oracle基础教程,你将能够熟练掌握数据库的基本操作,为进一步深入学习Oracle的高级特性如存储过程、触发器、索引和视图等打下坚实基础。

    Oracle数据库知识点快速学习

    例如,`SELECT ROUND(3.14159, 2) FROM DUAL` 返回3.14,保留两位小数。 六、SQL99和SQL92 SQL99和SQL92是SQL标准的不同版本。SQL92引入了更强大的查询功能,如JOIN操作,子查询,集合操作,以及更严谨的语法。SQL...

Global site tag (gtag.js) - Google Analytics