`

【转】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保留两位小数解决方案

    公司需要处理一些报表,需要使用百分率,保留2位小数,只用round和trunc函数都可以实现(round(_data,2) ),只是格式不是很工整,对格式要求不严谨的情况下使用round即可. 个人认为比较方便的一种 select decode(n_jg...

    SqlServer函数_四舍六入五成双

    四舍六入五成双:四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前...例: 0.4451 保留两位 0.45 例: 0.445 保留两位 0.44 例: 0.435 保留两位 0.44 支持不保留小数位,返回值为FLOAT,已经过测试,应用于项目。

    Oracle练习笔试大全

    //(加$符号加入千位分隔符,保留四位小数,没有的补零) 37、select to_char(sal, 'L99,999.9999')from emp; //(L 将货币转化为本地币种此处将显示¥人民币) 38、select to_char(sal, 'L00,000.0000')from emp; //...

    最全的oracle常用命令大全.txt

    下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 1、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_...

    Oracle9i的init.ora参数中文说明

    并确保在同一事务处理种对相同数据的两次查询看到的是相同的值。 值范围: TRUE | FALSE 默认值: FALSE row_locking: 说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ALWAYS, 只有在表被更新后才获取...

    数据库程序设计第二次上机

    显示两位小数00),并在头位 数字前显示本地货币符号“¥” 5. 设置sqlplus页宽为200字符,页高为100行,应使用什么 sqlplus命令实现? 6. 如何查看当前用户是什么数据库用户? 7. 如何将第4、5题中的格式操作...

    orcale常用命令

    下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 1、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_...

    2009达内SQL学习笔记

    这些英语单词称为关键字/保留字,不做它用。SQL由多个关键字构成。 SQL语句由子句构成,有些子句是必须的,有些是可选的。 在处理SQL语句时,其中所有的空格都被忽略(空格只用来分开单词,连续多个空格当一个用)。...

    精髓Oralcle讲课笔记

    --(加$符号加入千位分隔符,保留四位小数,没有的补零) 37、select to_char(sal, 'L99,999.9999')from emp; --(L 将货币转化为本地币种此处将显示¥人民币) 38、select to_char(sal, 'L00,000.0000')from emp; ...

    整理后java开发全套达内学习笔记(含练习)

    float 32bit, 9位有效数字,含小数(四舍五入)(小数点算一位,正负号不算) double 64bit, 18位有效数字 注:float 和 double 的小数部分不可能精确,只能近似。 比较小数时,用 double i=0.01; if ( i - 0.01 ) ...

    mysql数据库的基本操作语法

    外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。 也就是说从表的外键值必须在主表中能找到或者为空。 当主表的记录被从表参照时,主表的记录将不...

    SQL语法大全

    SQL语法大全 SQL语法大全 1. ASP与Access数据库连接: dim conn,mdbfile mdbfile=server.mappath("数据库名称.mdb") set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access ...

    C#编程经验技巧宝典

    122 <br>0205 如何使用正则表达式验证两位小数 122 <br>0206 如何使用正则表达式验证一年的12个月份 123 <br>0207 如何使用正则表达式验证一个月的31天 123 <br>0208 如何使用正则表达式验证数字...

Global site tag (gtag.js) - Google Analytics