Oracle 百分比
日前遇到一个问题,需要对在Oracle数据库中查询出来的数值进行比率的计算。类似于如下的SQL:
Select Round((discount/Amount),2) from dual;
这样算出来的数字可以满足绝大部分的需求。但是对于不到1的数字,问题出来了......显示的类似于 .45样子的数据。0.45前面的0不见了。
以下总结了两种方法来解决缺0的问题。
第一种解决方案:
SELECT DECODE (TRUNC (1/100),0, REPLACE (1/100, ''.'', ''0.''),TO_CHAR (1/100))
from DUAL;
大家只要在1/100的地方替换成自己需要的百分数就可以了。
第二种解决方案:
SELECT RTrim(To_Char(1/100,''FM99999999990.9999''),''.'') from dual;
替换方式同上。
两种方式的比较:
第一种公式比较复杂,但可以处理通用的数值。
第二种看起来简单,不过格式化的值的位数一定要大于计算的位数才行。比如 SELECT RTrim(To_Char(200,''FM90.9999'') ,''.'') from dual; 显示的就是########,因为超过格式化的范围了。
不过一般来说我还是倾向于使用第二种,毕竟放宽一点就可以了^_^。
不知道谁还知道有更加好或者规范的写法?
文章出处:DIY部落(http://www.diybl.com/course/7_databases/oracle/oraclejs/2008224/100982.html)
SELECT RTrim(To_Char((1/3)*100,'FM99999999990.9999'),'.')||'%' from dual; 这样获得的是33.3333%
SELECT substr(RTrim(To_Char((1/3)*100,'FM99999999990.9999'),'.'),1,2) ||'%' from dual; 这样可以省略小数,得33%
SELECT RTrim(To_Char((round((1/3),2))*100,'FM99999999990.9999'),'.')||'%' from dual;与以上是同样效果,得33%.
其中把1/3换成你要的 我的是:单个选项的票数/总票数即可
当然单个选项的票数,总票数 也得你用你的SQL语句算出来就OK了.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wpplvhq/archive/2008/09/21/2956993.aspx
相关文档:
--查出所有被锁住的表
select b.owner TABLEOWNER, b.object_name TABLENAME, c.OSUSER LOCKBY, c.USERNAME LOGINID, c.sid SID, c.SERIAL# SERIAL
from v$locked_object a,dba_objects b, v$session c
where b.object_id = a.object_id AND a.SESSION_ID =c.sid;
--通过SID, SERIAL解锁
--alter system kill sessio ......
这篇文章阐述了如何管理oracle ERP的interface表
这篇文章阐述了如何管理oracle ERP的interface表
http://blog.oraclecontractors.com/?p=212
There are a number of tables used by Oracle Applications that should have no rows in them when all is running well, and if any, only a few rows that are in error. ......
ORACLE日期时间函数大全
TO_DATE格式(以时间:2007-11-02 13:45:25为例)
Year:
yy two digits 两位年 &nb ......
PROCEDURE user_Login (
i_AuthID IN user_UserPass.UserID%TYPE, --用户代码
i_FunctionCode IN &n ......
LONEFOX题记:
最近搞ORACLE, 转过来供参考。
=================================
1、SQL 语句基础
下面给出SQL语句的基本介绍。
1.1、SQL语句所用符号
操作符
用途
例子
+ -
表示正数或负数,正数可省去 +
-1234.56
+
将两个数或表达式进行相加
A=c+b ......